在浏览器应用中使用 gRPC

注意

此版本不是本文的最新版本。 有关当前版本,请参阅本文.NET 9 版本。

警告

此版本的 ASP.NET Core 不再受支持。 有关详细信息,请参阅 .NET 和 .NET Core 支持策略。 对于当前版本,请参阅此文的 .NET 8 版本

重要

此信息与预发布产品相关,相应产品在商业发布之前可能会进行重大修改。 Microsoft 对此处提供的信息不提供任何明示或暗示的保证。

有关当前版本,请参阅本文.NET 9 版本。

作者:James Newton-King

无法通过浏览器直接调用 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 或更高版本。

其他资源