Serialization protobuf版本之间的数据格式兼容性

Serialization protobuf版本之间的数据格式兼容性,serialization,protocol-buffers,Serialization,Protocol Buffers,我想知道协议缓冲区的序列化数据格式在protobuf编译器和客户端库版本中是否保持不变 换句话说,我需要使用同一个编译器版本来生成Python、java和C++类吗?这些客户端是否都需要使用相同版本的protobuf库 某种程度上解决了我的问题,但它被接受的答案是特定于OP的protobuf版本。是的,基本上就是这个想法。使用哪个库并不重要,只要它符合规范。请注意,相同的数据可以用稍有不同的方式表示,例如,字段顺序对客户端来说并不重要,虽然客户端通常以升序写入字段,但明确要求客户端以任何顺序处理

我想知道协议缓冲区的序列化数据格式在protobuf编译器和客户端库版本中是否保持不变

换句话说,我需要使用同一个编译器版本来生成Python、java和C++类吗?这些客户端是否都需要使用相同版本的protobuf库


某种程度上解决了我的问题,但它被接受的答案是特定于OP的protobuf版本。

是的,基本上就是这个想法。使用哪个库并不重要,只要它符合规范。请注意,相同的数据可以用稍有不同的方式表示,例如,字段顺序对客户端来说并不重要,虽然客户端通常以升序写入字段,但明确要求客户端以任何顺序处理字段。这里我要说的是,它可能不是完全相同的字节,以相同的顺序,但它应该可以从任何客户端正常工作

请注意,一些实现可能会提供额外的功能(*cough*像我的一样提供继承支持),主要用于该单一客户机。在这种情况下,我会a:期望这些特性在使用时是显而易见的,b:它应该始终生成有效的protobuf流(您可以选择忽略这些字段,或者出于往返的目的将它们支持为
字节)。

如果不是“以相同的顺序完全相同的字节”,许多客户端将中断。任何依赖哈希和加密签名的人。