.NET Standard 2.0에서 gRPC 클라이언트 사용
참고 항목
이 문서의 최신 버전은 아닙니다. 현재 릴리스는 이 문서의 .NET 8 버전을 참조 하세요.
Important
이 정보는 상업적으로 출시되기 전에 실질적으로 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적, 또는 묵시적인 보증을 하지 않습니다.
현재 릴리스는 이 문서의 .NET 8 버전을 참조 하세요.
작성자: James Newton-King
이 문서에서는 .NET Standard 2.0을 지원하는 .NET 구현에서 .NET gRPC 클라이언트를 사용하는 방법을 설명합니다.
.NET 구현체
다음 .NET 구현(또는 이후 버전)은 Grpc.Net.Client를 지원하지만 HTTP/2를 완전히 지원하지 않습니다.
- .NET Core 2.1
- .NET Framework 4.6.1
- Mono 5.4
- Xamarin.iOS 10.14
- Xamarin.Android 8.0
- 유니버설 Windows 플랫폼 10.0.16299
- Unity 2018.1
.NET gRPC 클라이언트는 몇 가지 추가 구성을 사용하여 이러한 .NET 구현에서 서비스를 호출할 수 있습니다.
HttpHandler 구성
HTTP 공급자는 GrpcChannelOptions.HttpHandler
를 사용하여 구성해야 합니다. 처리기가 구성되지 않은 경우 오류가 throw됩니다.
System.PlatformNotSupportedException
: gRPC는 HTTP/2를 통한 gRPC를 지원하지 않는 .NET 구현에서 RPC 호출을 성공적으로 수행하기 위해 추가 구성이 필요합니다. HTTP 공급자는GrpcChannelOptions.HttpHandler
를 사용하여 지정해야 합니다. 구성된 HTTP 공급자는 HTTP/2를 지원하거나 gRPC-Web을 사용하도록 구성해야 합니다.
UWP, Xamarin 및 Unity와 같이 HTTP/2를 지원하지 않는 .NET 구현은 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" });
클라이언트는 gRPC 클라이언트 팩터리를 사용하여 만들 수도 있습니다. HTTP 공급자는 ConfigurePrimaryHttpMessageHandler 확장 메서드를 사용하여 구성됩니다.
builder.Services
.AddGrpcClient<Greet.GreeterClient>(options =>
{
options.Address = new Uri("https://localhost:5001");
})
.ConfigurePrimaryHttpMessageHandler(
() => new GrpcWebHandler(new HttpClientHandler()));
자세한 내용은 .NET gRPC 클라이언트를 사용하여 gRPC-Web 구성을 참조하세요.
Important
gRPC-Web을 지원하려면 클라이언트 및 서버가 필요합니다. gRPC-Web은 ASP.NET Core gRPC 서버에서 신속하게 구성할 수 있습니다. 다른 gRPC 서버 구현에는 gRPC-Web을 지원하는 프록시가 필요합니다.
.NET Framework
.NET Framework는 HTTP/2를 통한 gRPC를 제한적으로 지원합니다. .NET Framework에서 HTTP/2를 통해 gRPC를 활성화하려면 WinHttpHandler를 사용하도록 채널을 구성합니다.
WinHttpHandler
사용에 대한 요구 사항 및 제한 사항:
- Windows 11 이상, Windows Server 2019 이상
- gRPC 클라이언트는 Windows 11 이상에서 완전히 지원됩니다.
- gRPC 클라이언트는 Windows Server 2019 및 Windows Server 2022에서 부분적으로 지원됩니다. 단항 및 서버 스트리밍 메서드가 지원됩니다. 클라이언트 및 양방향 스트리밍 메서드는 지원되지 않습니다 .
System.Net.Http.WinHttpHandler
버전 6.0.1 이상에 대한 참조입니다.GrpcChannelOptions.HttpHandler
를 사용하여 채널에서WinHttpHandler
를 구성합니다.- .NET Framework 4.6.1 이상.
- TLS를 통한 gRPC 호출만 지원됩니다.
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# 핵심 라이브러리
.NET Framework 및 Xamarin의 대체 옵션은 gRPC C# 코어 라이브러리를 사용하여 gRPC를 호출하는 것이었습니다. gRPC C# 핵심 라이브러리는:
- .NET Framework 및 Xamarin에서 HTTP/2를 통한 gRPC 호출을 지원하는 타사 라이브러리입니다.
- Microsoft에서 지원하지 않습니다.
- 유지 관리 모드이며 ..NET용 gRPC에서 더 이상 사용되지 않습니다.
- 새 앱에는 사용하지 않는 것이 좋습니다.
추가 리소스
ASP.NET Core