Protocol buffers proto2能和proto3说话吗?

Protocol buffers proto2能和proto3说话吗?,protocol-buffers,Protocol Buffers,我有两个应用程序通过GPB消息相互通信。两人都使用proto3,但发现其中一人必须使用proto2。如果消息相同,那么一个程序可以使用proto2进行编译,而另一个程序可以使用proto3吗?或者它们是否需要使用相同版本的proto进行编译。wire格式非常相似,因此在某种程度上可以工作。但是,有一些警告: proto3上不存在必填/可选字段的区别。您应该在proto2端将所有字段设置为可选,以避免丢失必填字段的错误 当proto3对字段进行编码时,在proto2端解码时,任何具有零值的字段都

我有两个应用程序通过GPB消息相互通信。两人都使用proto3,但发现其中一人必须使用proto2。如果消息相同,那么一个程序可以使用proto2进行编译,而另一个程序可以使用proto3吗?或者它们是否需要使用相同版本的proto进行编译。

wire格式非常相似,因此在某种程度上可以工作。但是,有一些警告:

  • proto3上不存在
    必填
    /
    可选
    字段的区别。您应该在proto2端将所有字段
    设置为可选
    ,以避免丢失必填字段的错误
  • 当proto3对字段进行编码时,在proto2端解码时,任何具有零值的字段都将丢失。若您在proto2端指定0作为默认值,那个么结果应该是ok
  • 扩展和任何类型都很难以兼容两者的方式使用

建议您在第一次使用GPB首字母缩略词时将其替换为完整术语。在那之后,你可以随意使用缩写词,但如果没有第一个扩展的定义,你可能会发现你自己的答案包括俄罗斯银行业、格鲁吉亚(美国和欧洲国家)的公共广播、巴西度假,以及一些贫穷、困惑的灵魂撰写的关于英镑的论文。