我想知道协议缓冲区的序列化数据格式是否在 protobuf 编译器和客户端库版本中保持不变。
换句话说,我是否需要使用相同的编译器版本来生成 Python、Java 和 C++ 类?这些客户端都需要使用相同版本的 protobuf 库吗?
这个帖子 https://stackoverflow.com/questions/4963620/are-protobuf-messages-compatible-across-versions-of-protobuf有点解决了我的问题,但其接受的答案特定于OP的protobuf版本。
是的,这就是这个想法。使用哪个库并不重要,只要它遵循规范即可。请注意,相同的数据can以稍微不同的方式表示,例如字段顺序对客户端来说不重要,虽然它是common对于客户端按升序写入字段,明确要求客户端以任意顺序处理字段。我在这里想说的是,它可能不是完全相同的字节以相同的顺序,但它应该可以在任何客户端上正常工作。
请注意,某些实现可能会提供额外的功能(*咳嗽*像我的提供继承支持),主要仅在单个客户端内使用。在这种情况下,我会a:期望这些功能在使用时是显而易见的,b:它应该always仍然会生成有效的 protobuf 流(您可能只是选择忽略这些字段,或者将它们支持为bytes
以往返为目的)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)