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

时间:2011-07-07 01:38:26

标签: serialization protocol-buffers

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

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

This post解决了我的问题,但其接受的答案特定于OP的protobuf版本。

1 个答案:

答案 0 :(得分:3)

是的,这就是这个想法。您使用哪个库并不重要,只要它遵循规范。请注意,相同的数据可以以稍微不同的方式表示,例如,字段顺序对客户端无关紧要,而客户端以递增方式写入字段 common 为了明确要求客户以任何顺序处理字段。我在这里说的是它可能不是在相同的顺序中完全相同的字节,但它应该可以在任何客户端正常工作。

请注意,某些实现可能会提供其他功能(* cough *,例如我提供的继承支持),主要仅用于该单个客户端。在这种情况下,我会:在使用时期望这些功能是显而易见的,并且b:它应该始终仍然产生有效的protobuf流(您可能只是选择忽略这些字段,或支持它们bytes为了往返)。