====== Protocol Buffers ====== ===== 教程 ===== * [[https://developers.google.com/protocol-buffers/docs/cpptutorial|official tutorial]] * 三步: - 定义 ''.proto'' 文件,语法见[[https://developers.google.com/protocol-buffers/docs/proto3|Protocol Buffer Language Guide]] - 使用编译工具 ''protoc'' 来编译 ''.proto''文件来生成对应语言的代码文件 - 接口使用,消息成员变量操作接口''''、''has_''、''set_''、''clear_''等, 可查看[[https://developers.google.com/protocol-buffers/docs/reference/cpp-generated|cpp-generated]]; 以及消息整体的操作''IsInitialized()''、''DebugString()''、''CopyFrom''、''Clear()''等, 可查看 [[https://developers.google.com/protocol-buffers/docs/reference/cpp/google.protobuf.message#Message|Message]]; 以及最重要的序列化与反序列化接口''SerializeToString''、''ParseFromString''等,同样可查看 [[https://developers.google.com/protocol-buffers/docs/reference/cpp/google.protobuf.message#Message|Message]] ==== Tips ==== * 不定类型的可用 [[https://developers.google.com/protocol-buffers/docs/proto3#any|any]] * 序列化的二进制格式详见[[https://developers.google.com/protocol-buffers/docs/encoding|encoding]] * 对时间的处理[[https://developers.google.com/protocol-buffers/docs/reference/cpp/google.protobuf.util.time_util|time_util]] * proto3 增加了序列化为json格式的接口[[https://developers.google.com/protocol-buffers/docs/reference/cpp/google.protobuf.util.json_util|json_util]] 以上链接大部分为c++链接, protobuf支持的其它语言比如Java,Go等,其接口链接要去官网对应的文档查看