.NET Standard 2.0 ile gRPC istemcisi kullanma
Uyarı
ASP.NET Core'un bu sürümü artık desteklenmiyor. Daha fazla bilgi için bkz . .NET ve .NET Core Destek İlkesi. Geçerli sürüm için bu makalenin .NET 8 sürümüne bakın.
Yayınlayan James Newton-King
Bu makalede .NET Standard 2.0'ı destekleyen .NET uygulamalarıyla .NET gRPC istemcisinin nasıl kullanılacağı açıklanır.
.NET uygulamaları
Aşağıdaki .NET uygulamaları (veya üzeri) Grpc.Net.Client'ı destekler ancak HTTP/2 için tam desteğe sahip değildir:
- .NET Core 2.1
- .NET Framework 4.6.1
- Mono 5.4
- Xamarin.iOS 10.14
- Xamarin.Android 8.0
- Evrensel Windows Platformu 10.0.16299
- Unity 2018.1
.NET gRPC istemcisi, bazı ek yapılandırmalarla bu .NET uygulamalarından hizmetleri çağırabilir.
HttpHandler yapılandırması
BIR HTTP sağlayıcısı kullanılarak GrpcChannelOptions.HttpHandler
yapılandırılmalıdır. İşleyici yapılandırılmamışsa bir hata oluşur:
System.PlatformNotSupportedException
: gRPC, HTTP/2 üzerinden gRPC desteği olmayan .NET uygulamalarında başarılı bir şekilde RPC çağrıları yapmak için ek yapılandırma gerektirir. kullanılarakGrpcChannelOptions.HttpHandler
bir HTTP sağlayıcısı belirtilmelidir. Yapılandırılan HTTP sağlayıcısıNıN HTTP/2'yi desteklemesi veya gRPC-Web kullanacak şekilde yapılandırılması gerekir.
UWP, Xamarin ve Unity gibi HTTP/2'yi desteklemeyen .NET uygulamaları alternatif olarak gRPC-Web kullanabilir.
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" });
İstemciler gRPC istemci fabrikası kullanılarak da oluşturulabilir. Bir HTTP sağlayıcısı, uzantı yöntemi kullanılarak ConfigurePrimaryHttpMessageHandler yapılandırılır.
builder.Services
.AddGrpcClient<Greet.GreeterClient>(options =>
{
options.Address = new Uri("https://localhost:5001");
})
.ConfigurePrimaryHttpMessageHandler(
() => new GrpcWebHandler(new HttpClientHandler()));
Daha fazla bilgi için bkz . .NET gRPC istemcisiyle gRPC-Web'i yapılandırma.
Önemli
gRPC-Web, istemcinin ve sunucunun bunu desteklemesini gerektirir. gRPC-Web, ASP.NET Core gRPC sunucusu tarafından hızla yapılandırılabilir. Diğer gRPC sunucu uygulamaları, gRPC-Web'i desteklemek için bir ara sunucu gerektirir.
.NET Framework
.NET Framework, HTTP/2 üzerinden gRPC için sınırlı desteğe sahiptir. .NET Framework'te HTTP/2 üzerinden gRPC'yi etkinleştirmek için kanalı kullanacak WinHttpHandlerşekilde yapılandırın.
kullanma WinHttpHandler
gereksinimleri ve kısıtlamaları:
- Windows 11 veya üzeri, Windows Server 2019 veya üzeri.
- gRPC istemcisi Windows 11 veya sonraki sürümlerde tam olarak desteklenir.
- gRPC istemcisi Windows Server 2019 ve Windows Server 2022'de kısmen desteklenir. Tekli ve sunucu akış yöntemleri desteklenir. İstemci ve çift yönlü akış yöntemleri desteklenmez .
- 6.0.1 veya sonraki bir sürüme
System.Net.Http.WinHttpHandler
başvuru. - kullanarak
GrpcChannelOptions.HttpHandler
kanalda yapılandırınWinHttpHandler
. - .NET Framework 4.6.1 veya üzeri.
- Yalnızca TLS üzerinden gRPC çağrıları desteklenir.
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# çekirdek kitaplığı
GRPC çağrıları yapmak için gRPC C# çekirdek kitaplığını kullanmak .NET Framework ve Xamarin için alternatif bir seçenektir. gRPC C# çekirdek kitaplığı:
- .NET Framework ve Xamarin üzerinde HTTP/2 üzerinden gRPC çağrıları yapmayı destekleyen bir üçüncü taraf kitaplığı.
- Microsoft tarafından desteklenmez.
- Bakım modundadır ve .NET için gRPC'nin lehine kullanım dışı bırakılacaktır.
- Yeni uygulamalar için önerilmez.
Ek kaynaklar
ASP.NET Core