Protobuf的一个卖点是向后兼容性,即开发人员可以改进格式,而旧版客户仍然可以使用它。
现在使用名为proto3的新Protobuf版本,IDL语言本身与options
,required
删除的地方,enuns的新语法,无扩展等不兼容。
这是否意味着使用proto3无法生成较旧的proto2读取/理解的二进制文件?
这就像你必须继续使用proto2。如果您开始使用proto3,则无法与旧系统通信,或者必须重写,重新编译所有.proto
个
这首先是兼容性破解。
答案 0 :(得分:3)
是的,如果您的某些系统是基于proto2的,那么最好继续使用proto2。在我看来,proto3没有引入许多新功能,大多数库将继续支持proto2。
然而,有线格式大多兼容。只要标签号相同,编码保持不变。 required / optional说明符不影响编码,它们只是解码后执行的检查。