Použití klienta gRPC s .NET Standard 2.0
Autor: James Newton-King
Tento článek popisuje, jak používat klienta .NET gRPC s implementacemi .NET, které podporují .NET Standard 2.0.
Implementace .NET
Následující implementace .NET (nebo novější) podporují Grpc.Net.Client , ale nemají úplnou podporu pro HTTP/2:
- .NET Core 2.1
- .NET Framework 4.6.1
- Mono 5.4
- Xamarin.iOS 10.14
- Xamarin.Android 8.0
- Univerzální platforma Windows 10.0.16299
- Unity 2018.1
Klient .NET gRPC může volat služby z těchto implementací .NET s určitou další konfigurací.
Konfigurace obslužné rutiny Http
Zprostředkovatel HTTP musí být nakonfigurován pomocí GrpcChannelOptions.HttpHandler
. Pokud není nakonfigurovaná obslužná rutina, vyvolá se chyba:
System.PlatformNotSupportedException
: GRPC vyžaduje dodatečnou konfiguraci pro úspěšné volání RPC u implementací .NET, které nepodporují gRPC přes HTTP/2. Zprostředkovatel HTTP musí být zadán pomocíGrpcChannelOptions.HttpHandler
. Nakonfigurovaný zprostředkovatel HTTP musí podporovat protokol HTTP/2 nebo musí být nakonfigurovaný tak, aby používal gRPC-Web.
Implementace .NET, které nepodporují HTTP/2, jako je UPW, Xamarin a Unity, můžou jako alternativu použít gRPC-Web.
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" });
Klienty je možné vytvořit také pomocí klientské továrny gRPC. Zprostředkovatel HTTP je nakonfigurovaný pomocí ConfigurePrimaryHttpMessageHandler metody rozšíření.
builder.Services
.AddGrpcClient<Greet.GreeterClient>(options =>
{
options.Address = new Uri("https://localhost:5001");
})
.ConfigurePrimaryHttpMessageHandler(
() => new GrpcWebHandler(new HttpClientHandler()));
Další informace naleznete v tématu Konfigurace gRPC-Web pomocí klienta .NET gRPC.
Důležité
gRPC-Web vyžaduje, aby ho klient a server podporovaly. gRPC-Web je možné rychle nakonfigurovat serverem ASP.NET Core gRPC. Jiné implementace serveru gRPC vyžadují proxy server pro podporu gRPC-Web.
.NET Framework
Rozhraní .NET Framework má omezenou podporu gRPC přes HTTP/2. Pokud chcete povolit gRPC přes HTTP/2 v rozhraní .NET Framework, nakonfigurujte kanál tak, aby používal WinHttpHandler.
Požadavky a omezení používání WinHttpHandler
:
- Windows 11 nebo novější, Windows Server 2019 nebo novější
- Klient gRPC je plně podporovaný ve Windows 11 nebo novějším.
- Klient gRPC je částečně podporovaný v systémech Windows Server 2019 a Windows Server 2022. Podporují se unární metody a metody streamování serveru. Klientské a obousměrné metody streamování se nepodporují .
- Odkaz na
System.Net.Http.WinHttpHandler
verzi 6.0.1 nebo novější. - Konfigurujte
WinHttpHandler
v kanálu pomocíGrpcChannelOptions.HttpHandler
. - .NET Framework 4.6.1 nebo novější.
- Podporují se pouze volání gRPC přes protokol 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" });
gRPC C# core-library
Alternativou pro rozhraní .NET Framework a Xamarin je použití knihovny core-library gRPC C# k volání gRPC. Knihovna core-library jazyka C# gRPC je:
- Knihovna třetí strany, která podporuje volání gRPC přes PROTOKOL HTTP/2 v rozhraní .NET Framework a Xamarin.
- Microsoft nepodporuje.
- V režimu údržby a bude vyřazen ve prospěch gRPC pro .NET.
- Nedoporučuje se pro nové aplikace.
Další materiály
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro