.NET Standard 2.0 ile gRPC istemcisi kullanma

Not

Bu, bu makalenin en son sürümü değildir. Geçerli sürüm için bu makalenin .NET 8 sürümüne bakın.

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.

Önemli

Bu bilgiler, ticari olarak piyasaya sürülmeden önce önemli ölçüde değiştirilebilen bir yayın öncesi ürünle ilgilidir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.

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.HttpHandleryapı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ılarak GrpcChannelOptions.HttpHandlerbir 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 WinHttpHandlergereksinimleri 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.HttpHandlerkanalda 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ığı:

Ek kaynaklar