【发布时间】:2017-09-13 13:36:43
【问题描述】:
我们正在实现一个客户端/服务器应用程序来在远程系统上运行我们的硬件。
为此,我们使用 GRPC、protobuf v3。
当我们修改.proto文件并重新编译客户端而不更新服务器时,我们得到了一个带有模糊消息的异常:
异常被处理程序抛出。
使用 GRPC,检测客户端/服务器版本不匹配的常用方法是什么?
编辑:修改示例
例如我们改变这个(消息参数的特定类型):
service RpcAcquisitionCard {
...
rpc SetNumericalControlOscillator(RpcNcoConfiguration)
...
}
message RpcNco {
RpcDeviceIdentifier deviceId = 1;
core.protobuf.RpcFrequency nco1 = 2;
core.protobuf.RpcFrequency nco2 = 3;
}
至此(消息参数的通用类型)
service RpcAcquisitionCard {
...
rpc SetNumericalControlOscillator(RpcCommandParameter)
...
}
message RpcCommandParameter {
RpcDeviceIdentifier deviceId = 1;
google.protobuf.Any parameter = 2;
}
message RpcNco {
core.protobuf.RpcFrequency nco1 = 1;
core.protobuf.RpcFrequency nco2 = 2;
}
RpcCommandParameter.parameter 字段是RpcNco。
【问题讨论】:
-
protobuf 向后和向前兼容。您如何更改 proto 以使其不再兼容?
-
我添加了修改示例。
-
Protobuf v3.我们正处于开发的早期阶段。
标签: c# client-server protocol-buffers grpc