我想知道协议缓冲区的序列化数据格式是否在protobuf编译器和客户端库版本中保持不变.
换句话说,我是否需要使用相同的编译器版本来生成我的Python,Java和C++类?这些客户都需要使用相同版本的protobuf库吗?
这篇文章解决了我的问题,但其接受的答案特定于OP的protobuf版本.
Protobuf 的卖点之一是向后兼容性,即开发人员可以改进格式,而老客户端仍然可以使用它。
options现在,有了名为 proto3 的新 Protobuf 版本,IDL 语言本身不兼容,例如required删除了 enun 的新语法、无扩展等。
这是否意味着使用 proto3 无法生成较旧的 proto2 也可以读取/理解的二进制文件?
就好像你必须继续使用proto2。如果你开始使用 proto3,你就无法与旧系统对话,或者必须重写、重新编译所有这些,.proto这首先就是兼容性问题。
compatibility backwards-compatibility protocol-buffers proto3