Megosztás a következőn keresztül:


GRPC-ügyfél használata a .NET Standard 2.0-val

Jegyzet

Ez nem a cikk legújabb verziója. Az aktuális kiadást a jelen cikk .NET 9-es verziójában.

Figyelmeztetés

A ASP.NET Core ezen verziója már nem támogatott. További információ: .NET és .NET Core támogatási szabályzat. A jelen cikknek a .NET 9-es verzióját az aktuális kiadásnál lásd .

Fontos

Ezek az információk egy olyan előzetes termékre vonatkoznak, amelyet a kereskedelmi forgalomba kerülés előtt jelentősen módosíthatnak. A Microsoft nem vállal kifejezett vagy hallgatólagos szavatosságot az itt megadott információkra vonatkozóan.

A jelen kiadás megtekintéséhez lásd a .NET 9-es verzióját ennek a cikknek.

Írta: James Newton-King

Ez a cikk azt ismerteti, hogyan használható a .NET gRPC-ügyfél olyan .NET-implementációkkal, amelyek támogatják a .NET Standard 2.0.

.NET-implementációk

A következő .NET-implementációk (vagy újabb verziók) támogatják a Grpc.Net.Client , de nem támogatják teljes mértékben a HTTP/2-t:

  • .NET Core 2.1
  • .NET-keretrendszer 4.6.1
  • Mono 5.4
  • Univerzális Windows Platform 10.0.16299
  • Unity 2018.1

A .NET gRPC-ügyfél néhány további konfigurációval meghívhat szolgáltatásokat ezekből a .NET-implementációkból.

HttpHandler-konfiguráció

A HTTP-szolgáltatót GrpcChannelOptions.HttpHandlerhasználatával kell konfigurálni. Ha egy kezelő nincs konfigurálva, hibaüzenet jelenik meg:

System.PlatformNotSupportedException: A gRPC további konfigurációt igényel az olyan .NET-implementációkon történő RPC-hívások sikeres indításához, amelyek nem támogatják a http/2-n keresztüli gRPC-t. A HTTP-szolgáltatót GrpcChannelOptions.HttpHandlerhasználatával kell megadni. A konfigurált HTTP-szolgáltatónak támogatnia kell a HTTP/2-t, vagy a gRPC-Web használatára kell konfigurálnia.

A HTTP/2-t nem támogató .NET-implementációk, például az UWP és a Unity, a gRPC-Webet használhatják alternatívaként.

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

Az ügyfelek a gRPC-ügyfél-előállítóhasználatával is létrehozhatók. A HTTP-szolgáltató a ConfigurePrimaryHttpMessageHandler bővítménymetódus használatával van konfigurálva.

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

További információ: GRPC-Web konfigurálása a .NET gRPC-ügyféllel.

Fontos

A gRPC-Web használatához az ügyfélnek és kiszolgálóra van szüksége. A gRPC-Web gyorsan konfigurálható ASP.NET Core gRPC-kiszolgáló. A gRPC-kiszolgáló egyéb implementációihoz proxy szükséges a gRPC-Web támogatásához.

.NET-keretrendszer

A .NET-keretrendszer http/2-n keresztül korlátozottan támogatja a gRPC-t. Ha http/2-n keresztül szeretné engedélyezni a gRPC-t a .NET-keretrendszeren, konfigurálja a csatornát a WinHttpHandlerhasználatára.

A WinHttpHandlerhasználatára vonatkozó követelmények és korlátozások:

  • Windows 11 vagy újabb, Windows Server 2019 vagy újabb.
    • A gRPC-ügyfél teljes mértékben támogatott Windows 11 vagy újabb rendszereken.
    • A gRPC-ügyfél részben támogatott a Windows Server 2019-ben és a Windows Server 2022-ben. A unary és a kiszolgálói streamelési módszerek támogatottak. Az ügyfél- és kétirányú streamelési módszerek nem támogatottak.
  • Hivatkozás System.Net.Http.WinHttpHandler 6.0.1-es vagy újabb verziójára.
  • Konfigurálja WinHttpHandler a csatornán a GrpcChannelOptions.HttpHandlerhasználatával.
  • .NET Framework 4.6.1 vagy újabb.
  • Csak a TLS-en keresztüli gRPC-hívások támogatottak.
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# magkönyvtár

A .NET-keretrendszer másik lehetősége az volt, hogy gRPC C# magtárat gRPC-hívások indításához. A gRPC C# alapkönyvtár:

  • Egy harmadik féltől származó kódtár, amely támogatja a gRPC-hívások HTTP/2-n keresztül történő indítását a .NET-keretrendszerben.
  • A Microsoft nem támogatja.
  • Karbantartási módban a rendszer a .NETgRPC-jének javára megszűnik.
  • Új alkalmazásokhoz nem ajánlott.

További erőforrások