1. 程式人生 > >簡單介紹 protocol buffer

簡單介紹 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
    (用這個表示二進位制檔案)檔案, 這個是二進位制檔案,人類不可讀,但是佔用空間小,傳輸方便.

參考資料