Protobuf的卖点之一是向后兼容性,即开发人员可以进化格式,较老的客户端仍然可以使用它。
现在有了名为proto3的新Protobuf版本,IDL语言本身与options、required where dropped、新的enuns语法、无扩展等内容不兼容。
这是否意味着使用proto3就无法生成旧版proto2也能读取/理解的二进制文件?
这就像你必须继续使用proto2一样。如果你开始使用proto3,你就无法与旧系统对话,或者不得不重写、重新编译所有那些首先破坏兼容性的.proto。
发布于 2016-11-20 22:33:10
是的,如果您的一些系统是基于proto2的,那么最好继续使用proto2。在我看来,proto3没有引入很多新特性,大多数库将继续支持proto2。
但是,wire格式基本上是兼容的。只要标签号相同,编码就保持不变。必需/可选说明符不会影响编码,它们只是在解码后执行的检查。
https://stackoverflow.com/questions/40680273
复制相似问题