1

Protobuf的卖点之一是向后兼容性,即开发人员可以演进格式,并且老客户端仍然可以使用它。Protobuf向后兼容性和proto3与proto2

现在有了一个名为proto3的新Protobuf版本,IDL语言本身并不兼容,例如options,required其中丢弃了新的enuns语法,没有扩展。

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

这就像你必须继续使用proto2。如果你开始使用proto3,你不能与旧系统交谈,或者必须重写,重新编译所有这些。首先,这是兼容性突破。

回答

2

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

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