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†

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.

Zusätzliche Ressourcen