.NET 上的 gRPC 支援的平台

作者:James Newton-King

本文探討搭配 .NET 使用 gRPC 的需求和支援的平台。 這兩個主要 gRPC 工作負載有不同的需求:

連線格式

gRPC 會利用 HTTP/2 中提供的進階功能。 任何位置都不支援 HTTP/2,但使用 HTTP/1.1 的第二種連線格式可用於 gRPC:

  • application/grpc:透過 HTTP/2 的 gRPC 是 gRPC 的常見使用方式。
  • application/grpc-web:gRPC-Web 修改 gRPC 通訊協定,使其與 HTTP/1.1 相容。 gRPC-Web 可在更多地方使用。 gRPC-Web 可供瀏覽器應用程式與網路使用,而不需要完全支援 HTTP/2。 不再支援兩個進階 gRPC 功能:用戶端串流和雙向串流。

.NET 上的 gRPC 支援這兩種連線格式。 預設會使用 application/grpc。 必須在用戶端和伺服器上設定 gRPC-Web,才能成功呼叫 gRPC-Web。 如需設定 gRPC-Web 的相關資訊,請參閱 ASP.NET Core gRPC 應用程式中的 gRPC-Web

ASP.NET Core gRPC 伺服器需求

使用 ASP.NET Core 裝載 gRPC 服務須使用 .NET Core 3.x 或更新版本。

  • .NET 5 或更新版本
  • .NET Core 3

ASP.NET Core gRPC 服務可以裝載於 .NET Core 支援的所有作業系統上。

  • Windows
  • Linux
  • macOS

支援的 ASP.NET Core 伺服器

支援所有內建的 ASP.NET Core 伺服器。

  • Kestrel
  • TestServer
  • IIS†
  • HTTP.sys†

†須使用 .NET 5 和 Windows 11 組建 22000 或 Windows Server 2022 組建 20348 或更新版本。

如需設定 ASP.NET Core 伺服器以執行 gRPC 的相關資訊,請參閱使用 ASP.NET Core 的 gRPC 服務

Azure 服務

†gRPC 需要在 Azure App Service 上使用以 Linux 為基礎的環境。 如需 Azure App Service 部署資訊,請參閱如何在 App Service 上部署 .NET 6 gRPC 應用程式

.NET gRPC 用戶端需求

Grpc.Net.Client 套件支援在 .NET Core 3 和 .NET 5 或更新版本上透過 HTTP/2 呼叫 gRPC。

在 .NET Framework 上,對透過 HTTP/2 的 gRPC 提供的支援有限。 UWP、Xamarin 及 Unity 等其他 .NET 版本沒有必要的 HTTP/2 支援,必須改為使用 gRPC-Web。

下表列出 .NET 實作及其 gRPC 用戶端支援:

.NET 實作 透過 HTTP/2 的 gRPC gRPC-Web
.NET 5 或更新版本 ✔️ ✔️
.NET Core 3 ✔️ ✔️
.NET Core 2.1 ✔️
.NET Framework 4.6.1 ⚠️† ✔️
Blazor WebAssembly ✔️
Mono 5.4 ✔️
Xamarin.iOS 10.14 ✔️
Xamarin.Android 8.0 ✔️
通用 Windows 平台 10.0.16299 ✔️
Unity 2018.1 ✔️

†.NET Framework 需要 WinHttpHandler 設定 和 Windows 11 或更新版本、Windows Server 2019 或更新版本。 如需詳細資訊,請參閱在 .NET Framework 上呼叫 gRPC

搭配 gRPC-Web 使用 Grpc.Net.Client 須設定額外的組態。 如需詳細資訊,請參閱:

重要

gRPC-Web 需要用戶端 伺服器才能支援它。gRPC-Web 可由 ASP.NET Core gRPC 伺服器快速設定。 其他 gRPC 伺服器實作需要 Proxy 才能支援 gRPC-Web。

其他資源