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

pep*_*psi 6 serialization protocol-buffers

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

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

这篇文章解决了我的问题,但其接受的答案特定于OP的protobuf版本.

Mar*_*ell 3

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

请注意,某些实现可能会提供附加功能(*咳嗽*像我的一样提供继承支持),主要仅在该单个客户端内使用。在这种情况下,我会 a:期望这些功能在使用时是显而易见的,b:它应该始终生成有效的 protobuf 流(您可能只是选择忽略这些字段,或者为了bytes往返的目的而支持它们) )。