proto2可以和proto3通话吗?

时间:2019-06-19 17:52:24

标签: protocol-buffers

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

1 个答案:

答案 0 :(得分:1)

接线格式非常相似,因此在某种程度上可以使用。但是,有一些警告:

  • 在proto3上不存在required / optional字段的区分。您应将所有字段optional放在proto2一侧,以免发生有关缺少必填字段的错误。
  • 当proto3对字段进行编码时,在proto2端进行解码时,任何具有零值的字段都将丢失。如果在proto2端将默认值指定为零,则可以正常工作。
  • 扩展名和任何类型都很难以与两者兼容的方式使用。