【发布时间】:2020-10-14 12:04:46
【问题描述】:
我们的asp net core api中有Grpc-api。我们的一些操作需要很长时间。我可以通过某种简单的方式将进度消息发回给我的客户吗?
例如“从提供者 1 读取...”、“从提供者 2 读取...”、“计算内容...”。
由于最终结果是一条小消息并且需要很短的时间才能发回,我认为流回数据没有意义,它的处理需要时间。
我曾尝试 google,但失败了
【问题讨论】:
标签: asp.net-core grpc
我们的asp net core api中有Grpc-api。我们的一些操作需要很长时间。我可以通过某种简单的方式将进度消息发回给我的客户吗?
例如“从提供者 1 读取...”、“从提供者 2 读取...”、“计算内容...”。
由于最终结果是一条小消息并且需要很短的时间才能发回,我认为流回数据没有意义,它的处理需要时间。
我曾尝试 google,但失败了
【问题讨论】:
标签: asp.net-core grpc
gRPC 不支持开箱即用的 RPC“进度”报告,因为它不属于 gRPC 的功能。 gRPC 是一个库,无法知道您认为在特定应用程序和特定 protobuf 服务定义中的“进展”。
因此,解决方案是在 gRPC 之上的应用程序逻辑中实现进度报告。一种巧妙的方法是在服务器流调用之上定义自定义“协议”。响应可以是带有子消息的 protobuf “oneof”消息,具体取决于服务器想要报告的内容。例如。在客户端收到的每个响应中,服务器可以表示当前进度信息(“ProgressInfo”消息)或实际结果(“ComputationResult”消息)。请注意,这只是实现进度报告的一种方式,但对我来说这听起来最直接。
【讨论】: