在浏览器应用中使用 gRPC
无法通过浏览器直接调用 gRPC 服务。 gRPC 使用 HTTP/2 功能,且没有浏览器在 Web 请求中提供支持 gRPC 客户端所需的控制级别。
ASP.NET Core 上的 gRPC 提供两种兼容浏览器的解决方案:gRPC-Web 和 gRPC JSON 转码。
gRPC-Web
gRPC-Web 允许浏览器应用通过 gRPC-Web 客户端和 Protobuf 调用 gRPC 服务。
- 它与普通 gRPC 类似,但它的线路协议略有不同,因而与 HTTP/1.1 和浏览器兼容。
- 要求浏览器应用从
.proto
文件生成 gRPC 客户端。 - 使浏览器应用能够从二进制消息的高性能和低网络使用率获益。
.NET 提供对 gRPC-Web 的内置支持。 有关详细信息,请参阅 ASP.NET Core gRPC 应用中的 gRPC-Web。
gRPC JSON 转码
gRPC JSON 转码允许浏览器应用调用 gRPC 服务,就像它们是使用 JSON 的 RESTful API 一样。
- 浏览器应用不需要生成 gRPC 客户端或了解 gRPC 的任何信息。
- 通过使用 HTTP 元数据注释
.proto
文件,可从 gRPC 服务自动创建 RESTful API。 - 使应用可以同时支持 gRPC 和 JSON Web API,而无需重复为两者生成单独的服务。
.NET 对从 gRPC 服务创建 JSON Web API 提供了内置支持。 有关详细信息,请参阅 ASP.NET Core gRPC 应用中的 gRPC JSON 转码。
注意
gRPC JSON 转码需要 .NET 7 或更高版本。