2011-07-07 82 views
5

我想知道如果协议缓冲器的串行化数据格式保持跨越protobuf的编译器和客户机库版本恒定。数据格式兼容性

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

This post排序地址我的问题,但其接受的答案是具体到OP的protobuf的版本。

回答

3

是的,这是相当多的想法。只要遵循规范,使用哪个库就不重要。需要注意的是可以稍微不同的方式来表示,例如字段顺序相同的数据不应该的问题,给客户端,而它是为客户写升序领域共同,有明确要求,客户端可以处理的字段以任意顺序排列。我在这里要说的是,它可能不是完全相同的字节,其顺序是,但它应该可以在任何客户端上正常工作。

请注意,某些实现可能会提供额外的功能(*咳嗽*,如我的提供继承支持),主要用于在单个客户端中使用。在这种情况下,我会答:预计使用时,这些功能是显而易见的,和B:应该总是仍然产生有效的protobuf流(你可能只是选择忽略这些字段,或支持他们为bytes为目的往返)。

+0

如果它不是“完全相同的字节在相同的顺序”,许多客户端将打破。任何依赖哈希和密码签名的人。 – jaybny