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
- .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.HttpHandler
haszná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ótGrpcChannelOptions.HttpHandler
haszná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 WinHttpHandler
haszná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 aGrpcChannelOptions.HttpHandler
haszná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.