Usare il client gRPC con .NET Standard 2.0
Nota
Questa non è la versione più recente di questo articolo. Per la versione corrente, vedere la versione .NET 8 di questo articolo.
Avviso
Questa versione di ASP.NET Core non è più supportata. Per altre informazioni, vedere Criteri di supporto di .NET e .NET Core. Per la versione corrente, vedere la versione .NET 8 di questo articolo.
Importante
Queste informazioni si riferiscono a un prodotto non definitive che può essere modificato in modo sostanziale prima che venga rilasciato commercialmente. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Per la versione corrente, vedere la versione .NET 8 di questo articolo.
Questo articolo illustra come usare il client GRPC .NET con implementazioni .NET che supportano .NET Standard 2.0.
Implementazioni di .NET
Le implementazioni .NET seguenti (o versioni successive) supportano Grpc.Net.Client , ma non dispongono del supporto completo per HTTP/2:
- .NET Core 2.1
- .NET Framework 4.6.1
- Mono 5.4
- Xamarin.iOS 10.14
- Xamarin.Android 8.0
- Piattaforma UWP (Universal Windows Platform) 10.0.16299
- Unity 2018.1
Il client .NET gRPC può chiamare i servizi da queste implementazioni .NET con una configurazione aggiuntiva.
Configurazione di HttpHandler
Un provider HTTP deve essere configurato usando GrpcChannelOptions.HttpHandler
. Se un gestore non è configurato, viene generato un errore:
System.PlatformNotSupportedException
: gRPC richiede una configurazione aggiuntiva per effettuare correttamente chiamate RPC in implementazioni .NET che non dispongono del supporto per gRPC su HTTP/2. È necessario specificare un provider HTTP usandoGrpcChannelOptions.HttpHandler
. Il provider HTTP configurato deve supportare HTTP/2 o essere configurato per l'uso di gRPC-Web.
Le implementazioni di .NET che non supportano HTTP/2, ad esempio UWP, Xamarin e Unity, possono usare gRPC-Web come alternativa.
var channel = GrpcChannel.ForAddress("https://localhost:5001", new GrpcChannelOptions
{
HttpHandler = new GrpcWebHandler(new HttpClientHandler())
});
var client = new Greeter.GreeterClient(channel);
var response = await client.SayHelloAsync(new HelloRequest { Name = ".NET" });
I client possono anche essere creati usando la factory client gRPC. Un provider HTTP viene configurato usando il metodo di ConfigurePrimaryHttpMessageHandler estensione.
builder.Services
.AddGrpcClient<Greet.GreeterClient>(options =>
{
options.Address = new Uri("https://localhost:5001");
})
.ConfigurePrimaryHttpMessageHandler(
() => new GrpcWebHandler(new HttpClientHandler()));
Per altre informazioni, vedere Configurare gRPC-Web con il client gRPC .NET.
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.
.NET Framework
.NET Framework ha un supporto limitato per gRPC su HTTP/2. Per abilitare gRPC su HTTP/2 in .NET Framework, configurare il canale per l'uso di WinHttpHandler.
Requisiti e restrizioni per l'uso di WinHttpHandler
:
- Windows 11 o versione successiva, Windows Server 2019 o versione successiva.
- Il client gRPC è completamente supportato in Windows 11 o versione successiva.
- Il client gRPC è parzialmente supportato in Windows Server 2019 e Windows Server 2022. Sono supportati metodi di streaming unari e server. I metodi di streaming bidirezionali e client non sono supportati.
- Riferimento alla
System.Net.Http.WinHttpHandler
versione 6.0.1 o successiva. - Configurare
WinHttpHandler
nel canale usandoGrpcChannelOptions.HttpHandler
. - .NET Framework 4.6.1 o versioni successive.
- Sono supportate solo le chiamate gRPC su TLS.
var channel = GrpcChannel.ForAddress("https://localhost:5001", new GrpcChannelOptions
{
HttpHandler = new WinHttpHandler()
});
var client = new Greeter.GreeterClient(channel);
var response = await client.SayHelloAsync(new HelloRequest { Name = ".NET" });
Core-library gRPC C#
Un'opzione alternativa per .NET Framework e Xamarin consiste nell'usare la libreria core gRPC C# per effettuare chiamate gRPC. gRPC C# core-library è:
- Libreria di terze parti che supporta l'esecuzione di chiamate gRPC su HTTP/2 in .NET Framework e Xamarin.
- Non supportato da Microsoft.
- In modalità di manutenzione e verrà deprecato a favore di gRPC per .NET.
- Non consigliato per le nuove app.