在浏览器应用中使用 gRPC

作者: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 或更高版本。

其他资源