在浏览器应用中使用 gRPC
注意
此版本不是本文的最新版本。 有关当前版本,请参阅本文的 .NET 9 版本。
警告
此版本的 ASP.NET Core 不再受支持。 有关详细信息,请参阅 .NET 和 .NET Core 支持策略。 对于当前版本,请参阅此文的 .NET 8 版本。
无法通过浏览器直接调用 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 或更高版本。