본문 바로가기
프로그래밍/PC

.NET Framework 4.6.2 에서 gRPC-Web 클라이언트 구현

by 사악신 2022. 6. 16.

먼저, gRPC-Web 연동과 관련한 Grpc.Net.Client.Web 패키지의 경우 .NET Framework 를 지원하지 않습니다.

 

따라서, .NET Standard 2.0 클래스 라이브러리를 생성한 다음, 이를 .NET Framework 4.6.2 에서 호출하는 방식을 사용하여야합니다. 아래 표에서 확인할 수 있듯, .NET Standard 2.0 의 경우 .NET Framework 4.6.1 이상 부터 지원합니다. 즉, 4.6 은 연동할 수 없습니다.

 

.NET Standard 클래스 라이브러리의 프로젝트 파일에 아래의 내용을 추가합니다.

 

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
    <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
  </PropertyGroup>

 

그리고 .NET Framework 4.6.2 프로젝트 파일에 아래의 내용을 추가합니다.("프로젝트를 언로드" 한 다음 소스를 수정하고, "프로젝트 다시 로드"를 하면 됩니다.)

 

  <PropertyGroup>
    ........
    <RestoreProjectStyle>PackageReference</RestoreProjectStyle>
    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
  </PropertyGroup>

 

상기 작업을 하지 않으면 .NET Standard 2.0 클래스 라이브러리가 호출되지 않습니다. 이제 .NET Standard 2.0 클래스 라이브러리에 gRPC 관련 패키지들을 NuGet 을 사용하여 추가합니다.

 

프로젝트 파일에 gRPC proto 파일을 지정합니다.

 

  <ItemGroup>
    <Protobuf Include="어쩌구저쩌구.proto" GrpcServices="Client" />
  </ItemGroup>

 

gRPC 클라이언트 호출 시 채널의 핸들러는 GrpcWebHandler 로 사용합니다.

 

channel = GrpcChannel.ForAddress("https://도메인주소", new GrpcChannelOptions
{
    HttpHandler = new GrpcWebHandler(GrpcWebMode.GrpcWeb, handler)
});

 

끝으로, gRPC 서버 서비스의 경우 다음 포스팅(2022.05.22 - [프로그래밍/PC] - .NET Core 에서 gRPC-Web 구현)을 참가하여 작업하면 됩니다. Kestrel 의 protocols 관련 설정은 반드시 확인하여야 합니다.

 

반응형

댓글