Delen via


gRPC-client gebruiken met .NET Standard 2.0

Notitie

Dit is niet de nieuwste versie van dit artikel. Zie de .NET 9-versie van dit artikelvoor de huidige release.

Waarschuwing

Deze versie van ASP.NET Core wordt niet meer ondersteund. Zie de .NET- en .NET Core-ondersteuningsbeleidvoor meer informatie. Zie de .NET 9-versie van dit artikelvoor de huidige release.

Belangrijk

Deze informatie heeft betrekking op een pre-releaseproduct dat aanzienlijk kan worden gewijzigd voordat het commercieel wordt uitgebracht. Microsoft geeft geen garanties, uitdrukkelijk of impliciet, met betrekking tot de informatie die hier wordt verstrekt.

Zie de .NET 9-versie van dit artikelvoor de huidige release.

Door James Newton-King

In dit artikel wordt beschreven hoe u de .NET gRPC-client gebruikt met .NET-implementaties die ondersteuning bieden voor .NET Standard 2.0.

.NET-implementaties

De volgende .NET-implementaties (of hoger) ondersteunen Grpc.Net.Client, maar hebben geen volledige ondersteuning voor HTTP/2:

  • .NET Core 2.1
  • .NET Framework 4.6.1
  • Mono 5.4
  • Universal Windows Platform 10.0.16299
  • Unity 2018.1

De .NET gRPC-client kan services aanroepen vanuit deze .NET-implementaties met een extra configuratie.

HttpHandler-configuratie

Een HTTP-provider moet worden geconfigureerd met behulp van GrpcChannelOptions.HttpHandler. Als een handler niet is geconfigureerd, treedt er een fout op:

System.PlatformNotSupportedException: gRPC vereist extra configuratie om RPC-aanroepen uit te voeren op .NET-implementaties die geen ondersteuning hebben voor gRPC via HTTP/2. Er moet een HTTP-provider worden opgegeven met behulp van GrpcChannelOptions.HttpHandler. De geconfigureerde HTTP-provider moet HTTP/2 ondersteunen of worden geconfigureerd voor het gebruik van gRPC-Web.

.NET-implementaties die geen ondersteuning bieden voor HTTP/2, zoals UWP en Unity, kunnen gRPC-Web als alternatief gebruiken.

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" });

Clients kunnen ook worden gemaakt met behulp van de gRPC-client-factory. Een HTTP-provider wordt geconfigureerd met behulp van de ConfigurePrimaryHttpMessageHandler-extensiemethode.

builder.Services
    .AddGrpcClient<Greet.GreeterClient>(options =>
    {
        options.Address = new Uri("https://localhost:5001");
    })
    .ConfigurePrimaryHttpMessageHandler(
        () => new GrpcWebHandler(new HttpClientHandler()));

Zie gRPC-Web configureren met de .NET gRPC-clientvoor meer informatie.

Belangrijk

gRPC-Web vereist dat de client-en server deze ondersteunen. gRPC-Web kan snel worden geconfigureerd door een ASP.NET Core gRPC-server. Voor andere gRPC-server-implementaties is een proxy vereist om gRPC-Web te ondersteunen.

.NET Framework

.NET Framework biedt beperkte ondersteuning voor gRPC via HTTP/2. Als u gRPC via HTTP/2 op .NET Framework wilt inschakelen, configureert u het kanaal voor het gebruik van WinHttpHandler.

Vereisten en beperkingen voor het gebruik van WinHttpHandler:

  • Windows 11 of hoger, Windows Server 2019 of hoger.
    • gRPC-client wordt volledig ondersteund in Windows 11 of hoger.
    • gRPC-client wordt gedeeltelijk ondersteund op Windows Server 2019 en Windows Server 2022. Unaire en serverstreamingmethoden worden ondersteund. Client- en bidirectionele streamingmethoden worden niet ondersteund.
  • Een verwijzing naar System.Net.Http.WinHttpHandler versie 6.0.1 of hoger.
  • Configureer WinHttpHandler op het kanaal met behulp van GrpcChannelOptions.HttpHandler.
  • .NET Framework 4.6.1 of hoger.
  • Alleen gRPC-aanroepen via TLS worden ondersteund.
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" });

gRPC C#-kernbibliotheek

Een alternatieve optie voor .NET Framework is het gebruik van gRPC C# core-library om gRPC-aanroepen te maken. gRPC C#-kernbibliotheek is:

  • Een bibliotheek van derden die ondersteuning biedt voor het maken van gRPC-aanroepen via HTTP/2 op .NET Framework.
  • Niet ondersteund door Microsoft.
  • In onderhoudsstatus en wordt afgeschaft ten gunste van gRPC voor .NET.
  • Niet aanbevolen voor nieuwe apps.

Aanvullende informatiebronnen