简单介绍 protocol buffer

protocol buffer

protocol buffer 是谷歌的一款序列化结构数据的工具. 它有几个核心的概念:

  • .proto文件: 定义protocol buffer message 类型的地方,这个类型指定了如何序列化你的结构数据,如下所示, 这个.proto文件定义了一个Person 结构数据(也可以看作类/结构体).
message Person {
  required string name = 1;
  required int32 id = 2;
  optional string email = 3;
  enum PhoneType {
    MOBILE = 0;
    HOME = 1;
    WORK = 2;
  }
  message PhoneNumber {
    required string number = 1;
    optional PhoneType type = 2 [default = HOME];
  }
  repeated PhoneNumber phone = 4;
}
  • protoc工具: protocol buffer compiler,用于编译.proto 文件,编译完之后,会出现两个文件 **.pb.h**.pb.cc , 这两个文件中就包含了刚才我们在.proto中定义的结构数据, 在生成的文件中以 的形式体现, 同时也存在 序列化和解析 这个结构数据的方法.
//生成文件中的一小部分
class Person : public ::google::protobuf::Message {
 public:
  Person();
  virtual ~Person();
  Person(const Person& from);
  • c++ 代码中 包含这个头文件就可以创建这个类的对象了, 创建了对象之后,我们可以把这个对象序列化, 保存到 .pb 文件中, 我们也可以从.pb文件中来还原之前序列化的对象.
  • 序列化的时候,有两种方式, 可以序列化成 .pbtxt(用这个后缀表示是txt文件,防止混淆),这是一个文本文件,人类可读,但是占用空间大. 也可以序列化成 pb(用这个表示二进制文件)文件, 这个是二进制文件,人类不可读,但是占用空间小,传输方便.

参考资料

https://developers.google.com/protocol-buffers/docs/cpptutorial

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

扫码关注云+社区