먼저, 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 관련 설정은 반드시 확인하여야 합니다.
'프로그래밍 > PC' 카테고리의 다른 글
라자루스 Release, Debug IDE 설정 (0) | 2024.06.25 |
---|---|
라자루스 3.2 MacOS 소스 설치 (0) | 2024.04.20 |
.NET Core 에서 gRPC-Web 구현 (0) | 2022.05.22 |
Visual Studio 2022 gRPC 서버 TLS 사용 (0) | 2022.02.21 |
Visual Studio 2022 gRPC 클라이언트 개발 (0) | 2022.02.06 |
댓글