4

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

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

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

这就好像你必须继续使用proto2。如果你开始使用 proto3,你就不能和旧系统对话,或者不得不重写、重新编译所有那些.protos,这首先是兼容性中断。

4

1 回答 1

4

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

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

于 2016-11-20T14:33:10.440 回答