Share via


gRPC nelle piattaforme supportate da .NET

Di James Newton-King

Questo articolo illustra i requisiti e le piattaforme supportate per l'uso di gRPC con .NET. Esistono requisiti diversi per i due principali carichi di lavoro gRPC:

Formati di collegamento

gRPC sfrutta le funzionalità avanzate disponibili in HTTP/2. HTTP/2 non è supportato ovunque, ma per gRPC è disponibile un secondo formato wire-format con HTTP/1.1:

  • application/grpc - gRPC su HTTP/2 è il modo in cui viene in genere usato gRPC.
  • application/grpc-web - gRPC-Web modifica il protocollo gRPC per essere compatibile con HTTP/1.1. gRPC-Web può essere usato in più posizioni. gRPC-Web può essere usato dalle app browser e nelle reti senza supporto completo per HTTP/2. Due funzionalità gRPC avanzate non sono più supportate: streaming client e streaming bidirezionale.

gRPC in .NET supporta entrambi i formati wire. application/grpc viene utilizzato per impostazione predefinita. gRPC-Web deve essere configurato nel client e nel server per le chiamate gRPC-Web riuscite. Per informazioni sulla configurazione di gRPC-Web, vedere gRPC-Web in ASP.NET App gRPC core.

requisiti del server ASP.NET Core gRPC

L'hosting di servizi gRPC con ASP.NET Core richiede .NET Core 3.x o versione successiva.

  • .NET 5 o versione successiva
  • .NET Core 3

ASP.NET servizi gRPC core possono essere ospitati in tutti i sistemi operativi supportati da .NET Core.

  • Windows
  • Linux
  • macOS

Server ASP.NET Core supportati

Sono supportati tutti i server ASP.NET Core predefiniti.

  • Kestrel
  • TestServer
  • IIS†
  • HTTP.sys†

†Requires .NET 5 e Windows 11 Build 22000 o Windows Server 2022 Build 20348 o versione successiva.

Per informazioni sulla configurazione dei server ASP.NET Core per l'esecuzione di gRPC, vedere gRPC services with ASP.NET Core (Servizi gRPC con ASP.NET Core).

Servizi di Azure

†gRPC richiede un ambiente basato su Linux nel servizio app Azure. Vedere Procedura per distribuire un'app .NET 6 gRPC in servizio app per informazioni sulla distribuzione del servizio app Azure.

Requisiti del client .NET gRPC

Il pacchetto Grpc.Net.Client supporta le chiamate gRPC su HTTP/2 in .NET Core 3 e .NET 5 o versioni successive.

Il supporto limitato è disponibile per gRPC su HTTP/2 in .NET Framework. Altre versioni di .NET come UWP, Xamarin e Unity non hanno il supporto HTTP/2 necessario e devono usare invece gRPC-Web.

La tabella seguente elenca le implementazioni di .NET e il relativo supporto client gRPC:

Implementazione .NET gRPC su HTTP/2 gRPC-Web
.NET 5 o versione successiva ✔️ ✔️
.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 ✔️
Piattaforma UWP (Universal Windows Platform) 10.0.16299 ✔️
Unity 2018.1 ✔️

†.NET Framework richiede la configurazione di WinHttpHandler e Windows 11 o versione successiva, Windows Server 2019 o versione successiva. Per altre informazioni, vedere Effettuare chiamate gRPC in .NET Framework.

L'uso Grpc.Net.Client di con gRPC-Web richiede una configurazione aggiuntiva. Per altre informazioni:

Importante

gRPC-Web richiede il client e il server per supportarlo. gRPC-Web può essere configurato rapidamente da un server ASP.NET Core gRPC. Altre implementazioni del server gRPC richiedono un proxy per supportare gRPC-Web.

Risorse aggiuntive