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

现在有了称为proto3的新Protobuf版本,IDL语言本身不兼容,例如optionsrequired被丢弃,enuns的新语法,不扩展。

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

就像您必须继续使用proto2。如果您开始使用proto3,则无法与较旧的系统通信,或者必须重写,重新编译所有这些.proto
首先是兼容性中断。

最佳答案

是的,如果您的某些系统基于proto2,则最好继续使用proto2。我认为proto3不会引入许多新功能,并且大多数库将继续支持proto2。

但是,有线格式几乎是兼容的。只要标签号相同,编码就保持相同。必需/可选说明符不影响编码,它们只是在解码后执行的检查。

07-26 00:45