【发布时间】:2016-06-09 11:30:50
【问题描述】:
有什么方法可以使用 Protobuf RPC 进行从服务器到客户端的调用调用(而从客户端到服务器的自定义调用,而不是直接调用)?
我的意思是,例如,用回调参数在 *.proto 文件中描述服务方法?
我正在使用 gRPC 库。
【问题讨论】:
标签: callback protocol-buffers rpc
有什么方法可以使用 Protobuf RPC 进行从服务器到客户端的调用调用(而从客户端到服务器的自定义调用,而不是直接调用)?
我的意思是,例如,用回调参数在 *.proto 文件中描述服务方法?
我正在使用 gRPC 库。
【问题讨论】:
标签: callback protocol-buffers rpc
在 gRPC 中处理服务器->客户端消息的一般方式是通过“流式传输”。也就是说,客户端调用服务器,然后服务器可以在最终完成调用之前“流”回一系列消息给客户端。
见:http://www.grpc.io/docs/guides/concepts.html#server-streaming-rpc
当然,“流式传输”与传统的“回调”是完全不同的模式,但您通常可以用它解决相同的问题。
注意Cap'n Proto RPC——Protobuf 和 gRPC 的替代品——完全支持双向调用,因为它支持对象引用作为第一类类型:例如,客户端可以调用服务器其中它提供了一个对象引用以用于回调,然后服务器可以稍后在客户端上调用回该对象。
(披露:我是 Google 的 Protobuf v2 的作者,也是 Cap'n Proto 的作者,但我不隶属于 gRPC。)
【讨论】: