1

我知道可以仅使用 .Net Framework(例如两个控制台应用程序)设置 gRPC 服务器和客户端场景。还可以使用 Grpc.AspNetCore.Web 包设置 Web 应用程序客户端(在我的情况下使用 Angular)和 .Net Core gRPC 服务器应用程序。

但是,当它不能与 Grpc.AspNetCore.Web 一起使用时,是否可以从 Web 应用程序调用 .Net 框架 gRPC 服务?

4

2 回答 2

1

完整的工作流程是这样的:

  1. 对于您现有的protoc,您需要添加protoc-gen-grpc-web插件:从https://github.com/grpc/grpc-web/releases下载——配置选项在这里:https ://github.com/grpc/grpc-web#client-配置选项

  2. 您需要启动envoy代理(它不是唯一的选项,但现在它似乎是最常用和支持的),配置似乎很复杂,但它只是冗长。好的起点在这里:https ://github.com/grpc/grpc-web/blob/master/net/grpc/gateway/examples/echo/envoy.yaml

  3. JS 前端只使用生成的代码,可以这么简单:https ://github.com/grpc/grpc-web#3-write-your-js-client

客户端正在向 Envoy 发送 gRPC-web 请求(因此您在 JS 中创建通常的 gRPC 消息和服务,这些消息和服务被转换为 HTTP 请求),Envoy 将其转换为常规 gRPC 调用并将其发送到您的 gRPC 服务。类似的响应。

于 2020-08-19T11:33:29.303 回答
0

Asp.net Core 3.1 为我们提供了通过 web 直接与 grpc 通信的选项,无需 Envoy 作为代理,您只需要 Grpc.AspNetCore.Web 包 2 ,我正在使用 2.31.0 https://www.nuget.org/packages/Grpc.AspNetCore.Web

于 2020-09-16T15:45:02.177 回答