gRPC auf .NET-unterstützten Plattformen
In diesem Artikel werden die Anforderungen und unterstützten Plattformen für die Verwendung von gRPC mit .NET erläutert. Es gibt unterschiedliche Anforderungen an die beiden gRPC-Hauptworkloads:
Transportformate
gRPC nutzt die in HTTP/2 verfügbaren erweiterten Features. HTTP/2 wird nicht überall unterstützt, aber ein zweites Übertragungsformat unter Verwendung von HTTP/1.1 ist für gRPC verfügbar:
application/grpc: gRPC über HTTP/2 ist die übliche Verwendung von gRPC.application/grpc-web: gRPC-Web ändert das gRPC-Protokoll so, dass es mit HTTP/1.1 kompatibel ist. Die Einsatzmöglichkeiten von gRPC-Web sind größer. gRPC-Web kann von Browser-Apps und in Netzwerken ohne vollständige Unterstützung für HTTP/2 verwendet werden. Zwei erweiterte gRPC-Funktionen werden nicht mehr unterstützt: Clientstreaming und bidirektionales Streaming.
gRPC auf .NET unterstützt beide Übertragungsformate. application/grpc wird standardmäßig verwendet. gRPC-Web muss auf dem Client und dem Server für erfolgreiche gRPC-Webaufrufe konfiguriert werden. Informationen zum Einrichten von gRPC-Web finden Sie unter gRPC-Web in ASP.NET Core gRPC-Apps.
ASP.NET Core gRPC-Serveranforderungen
Für das Hosting von gRPC-Diensten mit ASP.NET Core ist .NET Core 3.x oder höher erforderlich.
- .NET 5 oder höher
- .NET Core 3
ASP.NET Core gRPC-Dienste können unter allen Betriebssystemen gehostet werden, die von .NET Core unterstützt werden.
- Windows
- Linux
- macOS†
†macOS unterstützt das Hosting von ASP.NET Core-Apps mit HTTPS nicht.
Unterstützte ASP.NET Core-Server
Alle integrierten ASP.NET Core-Server werden unterstützt.
- Kestrel
- TestServer
- IIS†
- HTTP.sys†
†Erfordert .NET 5 und Windows 11 Build 22000 oder Windows Server 2022 Build 20348 oder höher.
Informationen zum Konfigurieren von ASP.NET Core-Servern zum Ausführen von gRPC finden Sie unter gRPC-Dienste mit ASP.NET Core.
Azure-Dienste
†Das Hosting von gRPC über HTTP/2 wird von Azure App Service nicht überall unterstützt. Die Unterstützung ist derzeit experimentell. gRPC-Web ist eine kompatible Alternative, die überall verfügbar ist.
Azure App Service-Bereitstellungsinformationen finden Sie unter Bereitstellen einer .NET 6 gRPC-App in App Service. Auf dieser Seite wird das Bereitstellen von gRPC mit HTTP/2 für App Service beschrieben. Dies ist experimentell und nicht in allen Azure-Rechenzentren verfügbar.
Es wird an der Verbesserung der Unterstützung für gRPC mit HTTP/2 in Azure App Service gearbeitet. Weitere Informationen finden Sie in diesem GitHub-Issue.
.NET gRPC-Clientanforderungen
Das GrpC.Net.Client-Paket unterstützt gRPC-Aufrufe über HTTP/2 unter .NET Core 3 und .NET 5 oder höher.
Eingeschränkte Unterstützung ist für gRPC über HTTP/2 unter .NET Framework verfügbar. Andere .NET-Versionen (z. B. UWP, Xamarin und Unity) verfügen nicht über die erforderliche HTTP/2-Unterstützung und müssen stattdessen gRPC-Web verwenden.
In der folgenden Tabelle werden .NET-Implementierungen und deren gRPC-Clientunterstützung aufgeführt:
| .NET-Implementierung | gRPC über HTTP/2 | gRPC-Web |
|---|---|---|
| .NET 5 oder höher | ✔️ | ✔️ |
| .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 | ❌ | ✔️ |
| Universelle Windows-Plattform 10.0.16299 | ❌ | ✔️ |
| Unity 2018.1 | ❌ | ✔️ |
†.NET Framework erfordert die Konfiguration von WinHttpHandler und Windows 11 oder höher.
Die Verwendung Grpc.Net.Client von unter .NET Framework oder mit gRPC-Web erfordert zusätzliche Konfiguration. Weitere Informationen finden Sie unter Verwenden des gRPC-Clients mit .NET Standard 2.0.
Wichtig
gRPC-Web setzt die Unterstützung durch Client und Server voraus. gRPC-Web kann schnell von einem ASP.NET Core gRPC-Server konfiguriert werden. Andere gRPC-Serverimplementierungen erfordern einen Proxy zur Unterstützung von gRPC-Web.