簡單介紹 protocol buffer
阿新 • • 發佈:2019-02-01
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