Pau*_*est 11 versioning protocol-buffers grpc proto3
假设我们使用gRCP/Protobuf来连接许多应用程序.这些应用程序是以自己的速度在自己的团队中开发和发布的.随着时间的推移,将在定义的界面上使用不同版本的相同应用程序的不同版本(例如,在用户PC上安装的桌面应用程序).
虽然Protobuf旨在允许向后兼容,但有没有办法知道哪个版本的接口在不同的点运行?
最简单的实现是使接口版本等于app版本.但是,由于使用了许多语言,在所有语言中实现应用程序版本并非易事.
那么版本界面如何让服务器知道客户端版本?我认为服务器应该能够登录
来自AppName v.version的DATETIME连接[using interface v.version]
在即将推出的 gRPC 版本中,将有一个称为服务器反射的新功能。这将允许客户端向服务器询问描述正在使用的 proto 文件的描述符。服务器不知道客户端正在运行的版本,而是客户端将知道服务器正在运行什么。如果服务器描述符与客户端已经拥有的描述符匹配,那么它就会知道它们在使用相同的版本。
这将在版本中发布1.1。
请注意,Protobuf 的设计使您不必 这样做!如果您正确设置了 proto,新旧版本的客户端和服务器应该可以协同工作。
jpa*_*jpa -1
如果您使用的是协议缓冲区版本 2,则可以使用默认值来实现这一点。Protocol buffers 3 已经删除了对默认值的支持,因此这个答案在那里不起作用。
在定义接口的 .proto 文件中,包含以下内容:
message MyLoginMessage
{
... normal login fields ...
// Increment this number when you make new releases
// of this .proto.
optional int32 protocol_version [default=55];
}
Run Code Online (Sandbox Code Playgroud)
这样任何客户端都会自动包含从 .proto 中获取的版本号。
编辑:啊,刚刚注意到 proto3 标签..所以我想这个答案对你来说毕竟没有用。
| 归档时间: |
|
| 查看次数: |
5443 次 |
| 最近记录: |