Protobuf 向后兼容性以及 proto3 与 proto2

Pau*_*est 5 compatibility backwards-compatibility protocol-buffers proto3

Protobuf 的卖点之一是向后兼容性,即开发人员可以改进格式,而老客户端仍然可以使用它。

options现在,有了名为 proto3 的新 Protobuf 版本,IDL 语言本身不兼容,例如required删除了 enun 的新语法、无扩展等。

这是否意味着使用 proto3 无法生成较旧的 proto2 也可以读取/理解的二进制文件?

就好像你必须继续使用proto2。如果你开始使用 proto3,你就无法与旧系统对话,或者必须重写、重新编译所有这些,.proto这首先就是兼容性问题。

jpa*_*jpa 6

是的,如果您的某些系统是基于 proto2 的,那么最好继续使用 proto2。在我看来,proto3 并没有引入很多新功能,大多数库将继续支持 proto2。

然而,有线格式大部分是兼容的。只要标签号相同,编码就保持不变。必需/可选说明符不会影响编码,它们只是解码后执行的检查。