gRPC auf .NET-unterstützten Plattformen

Von James Newton-King

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

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

†gRPC erfordert eine Linux-basierte Umgebung in Azure App Service. Azure App Service-Bereitstellungsinformationen finden Sie unter Bereitstellen einer .NET 6 gRPC-App in App Service.

.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, Windows Server 2019 oder höher. Weitere Informationen finden Sie unter Führen von gRPC-Aufrufen auf .NET Framework.

Die Verwendung von Grpc.Net.Client mit gRPC-Web erfordert zusätzliche Konfiguration. Weitere Informationen finden Sie unter:

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.

Zusätzliche Ressourcen