.NET 上的 gRPC 支援的平台
注意
這不是這篇文章的最新版本。 如需目前版本,請參閱本文的 .NET 8 版本。
警告
不再支援此版本的 ASP.NET Core。 如需詳細資訊,請參閱 .NET 和 .NET Core 支援原則。 如需目前版本,請參閱本文的 .NET 8 版本。
本文探討搭配 .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
- 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。