.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 可在更多地方使用。 在不完全支持 HTTP/2 的浏览器应用和网络中均可使用 gRPC-Web。 不再支持两个高级 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 的信息,请参阅使用 的 gRPC 服务。
Azure 服务
†gRPC 需要在 Azure 应用服务上使用基于 Linux 的环境。 有关 Azure 应用服务部署信息,请参阅如何在应用服务上部署 .NET 6 gRPC 应用。
.NET gRPC 客户端要求
Grpc.Net.Client 包支持在 .NET Core 3 以及 .NET 5 或更高版本上通过 HTTP/2 进行 gRPC 调用。
.NET Framework 上对 gRPC over HTTP/2 的支持有限。 其他 .NET 版本(例如 UWP、Xamarin 和 Unity)不具备所需的 HTTP/2 支持,必须改为使用 gRPC-Web。
下表列出了 .NET 实现及其 gRPC 客户端支持:
.NET 实现 | gRPC over HTTP/2 | 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.Net.Client
与 gRPC-Web 一起使用,需要进行其他配置。 更多相关信息:
重要事项
gRPC-Web 要求客户端和服务器支持它。gRPC-Web 可由 ASP.NET Core gRPC 服务器快速配置。 其他 gRPC 服务器实现需要代理来支持 gRPC-Web。