C#에서 gRPC 서버 개발 환경 만들기

7323 단어 C#gRPC

개요



C#에서 gRPC 서버의 개발 환경을 만드는 단계입니다.
Visual Studio 2019를 사용합니다.
대체로 이것과 같습니다.
htps : // / cs. 미 c 로소 ft. 이 m/쟈-jp/아 sp네 t/이것/grpc/바시 cs?ゔ ぃ w = 아 sp t 이것 3.0
htps://grpc. 이오 / 도 cs / 쿠이 cks rt / c 샤 rp /

C# 프로젝트 만들기



콘솔 앱(.NET Core) 프로젝트를 만듭니다.


패키지 설치



NuGet에서 다음 패키지를 설치합니다.
* Grpc.Core
* Grpc.Tools
* Google.Protobuf

프로젝트 파일 편집



프로젝트 파일에 다음 코드를 추가합니다.
proto 파일에서 C# 소스 코드를 생성하기 위한 설정입니다.
  <ItemGroup>
    <Protobuf Include="**/*.proto" OutputDir="%(RelativePath)" CompileOutputs="false" GrpcServices="Server" />
  </ItemGroup>

위는 서버 측 파일을 생성하는 경우입니다. 클라이언트측의 경우 GrpcServicesClient로 설정합니다.
서버 클라이언트 파일을 모두 생성하려면 Both로 설정하십시오.

proto 파일 추가



예를 들어 다음과 같은 proto 파일을 추가합니다.

helloworld.proto
syntax = "proto3";

// The greeting service definition.
service Greeter {
  // Sends a greeting
  rpc SayHello (HelloRequest) returns (HelloReply) {}
}

// The request message containing the user's name.
message HelloRequest {
  string name = 1;
}

// The response message containing the greetings
message HelloReply {
  string message = 1;
}

추가하면 자동으로 C# 파일이 생성됩니다.

서버 시작



아래와 같은 코드로 서버가 움직입니다.
using Grpc.Core;
using System;
using System.Threading.Tasks;

namespace ConsoleApp2
{
    class GreeterImpl : Greeter.GreeterBase
    {
        // Server side handler of the SayHello RPC
        public override Task<HelloReply> SayHello(HelloRequest request, ServerCallContext context)
        {
            return Task.FromResult(new HelloReply { Message = "Hello " + request.Name });
        }
    }

    class Program
    {
        const int Port = 50051;

        public static void Main(string[] args)
        {
            Server server = new Server
            {
                Services = { Greeter.BindService(new GreeterImpl()) },
                Ports = { new ServerPort("localhost", Port, ServerCredentials.Insecure) }
            };
            server.Start();

            Console.WriteLine("Greeter server listening on port " + Port);
            Console.WriteLine("Press any key to stop the server...");
            Console.ReadKey();

            server.ShutdownAsync().Wait();
        }
    }
}

끝.

좋은 웹페이지 즐겨찾기