协议缓冲区 – 如果.proto文件保持不变,是否可以在不同的protobuf版本之间交换数据?

假设.proto文件永远不会改变,我们有一个基于TCP的客户端服务器系统,他们通过protobuf消息说出每个文件.在客户端和服务器都在protobuf版本2.4.1之前.现在服务器升级到2.5.0(首先使用2.5.0 protoc exe重新编译.
java文件,而不是2.5.0运行时库的链接).但客户端仍然使用2.4.1版本.这个系统还能运作吗?

我认为这是客户端 – 服务器系统的常见问题.我相信它会起作用,但实际上我没有从谷歌提供的文件中找到任何关于它的话.

最佳答案 是的,这应该工作正常.如果你开始使用2.4.1中不存在的新功能,唯一会破坏它的是,但如果不改变.proto模式就不可能做到这一点,所以你确实可以安全地做到这一点.版本容忍是protobuf的一件大事;新功能(例如:压缩数组)总是选择加入并需要.proto更改.

点赞