Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 깃 브렌치 삭제
- 씨샵파일이름추출 #씨샵확장자제외한파일이름추출 #씨샵확장자추출
- 파이썬가상환경생성 #파이썬가상환경활성화 #파이썬가상환경비활성화
- gRPC프로젝트생성 #gRPCC# #gRPC서버클라이언트 #gRPC튜토리얼 #gRPCTutorial
- python #파이썬 #dictionary #딕셔너리 #del #pop()
- DB #데이터베이스 #테이블 #로우 #컬럼 #Row #Column #Table
- 자바개발환경구축 #자바개발환경구축하기 #자바설치
- 모달 #Modal #모달리스 #Modaless
- 파이썬 파일명과 확장자 분리
- VSCode #Prettier #Codeformatter
- 파일탐색기 브라우저처럼 사용
- 깃stash #gitstash #새로운파일stash
- 데이터베이스 #데이터베이스란 #DBMS #SQL
- 파이썬코딩가이드 #파이썬PEP8 #파이썬PEP8스타일가이드
- 깃커밋메시지변경 #git커밋메시지변경 #깃커밋메시지수정 #git커밋메시지수정
- 파이썬리스트 #파이썬딕셔너리 #파이썬리스트안딕셔너리데이터 #파이썬리스트딕셔너리
- 파일탐색기 탭기능 사용하기
- 이클립스프로젝트위치이동 #이클립스프로젝트위치변경 #이클립스프로젝트로컬위치변경 #이클립스프로젝트로컬위치이동
- 파일탐색기 탭기능
- 파이썬버전확인하기 #파이썬버전조회
- gRPC #gRPC튜토리얼
- 씨샵 #foreach #foreachindex
- 리눅스 #리눅스마운트 #마운트 #mount #마운트개념
- 씨샵 #함수에서여러개값내보내기 #함수에서여러개의return받기 #함수여러개값리턴
- 자바JDK설치
- SOLID #객체지향설계5원칙 #DIP #ISP #SRP #LSP #OCP
- 파이썬 경로추출
- 파이썬 확장자 분리
- 파이썬 경로 분리
- 자바자료형 #Java자료형 #자바자료형종류 #Java자료형종류
Archives
- Today
- Total
개발자로 살아남기
[gRPC] C#으로 gRPC 서버, 클라이언트 만들기 - 튜토리얼(1) 본문
C# gRPC Server, Client 시작하기(Tutorial) - 1
1. Server 프로젝트 생성
[새 프로젝트 만들기] → grpc 검색 → ASP.NET Core gRPC 서비스 선택 -> 솔루션 이름 GrpcDemo
, 프로젝트 이름 GrpcServer
로 생성
- GrpcServer : gRPC의 Server Side
Protos 폴더의 great.proto
- 서버와 클라이언트 간의 계약을 정의하는 방식
// 최신 proto 구문 또는 스키마를 사용하려면 proto3
syntax = "proto3";
// 특정 proto에 대한 namespace 지정
option csharp_namespace = "GrpcService";
// 패키지 이름
package greet;
service Greeter {
rpc SayHello (HelloRequest) returns (HelloReply);
}
message HelloRequest {
string name = 1;
}
message HelloReply {
string message = 1;
}
- service : service 정의
- message : 클래스를 정의하면 된다.
- 여러가지 속성이 있고 0개 이상의 항목을 지정한다.
- 숫자는 속성이 진행되는 순서를 나타낸다.
- HelloRequest : 데이터가 수신할 메시지
- HelloReply : 데이터 유형
C#으로 따지면 아래와 같다.
public HelloReply SayHello(HelloRequest input){
}
GreeterService.cs
using Grpc.Core;
using GrpcService;
namespace GrpcService.Services
{
// Greeter.GreeterBase 의 Greeter : service name
public class GreeterService : Greeter.GreeterBase
{
private readonly ILogger<GreeterService> _logger;
public GreeterService(ILogger<GreeterService> logger)
{
_logger = logger;
}
// SayHello 자신의 코드로 재정의
// SayHello 호출 시 이 메서드 실행
public override Task<HelloReply> SayHello(HelloRequest request, ServerCallContext context)
{
return Task.FromResult(new HelloReply
{
Message = "Hello " + request.Name
});
}
}
}
2. GrpcServer Run
해당 로컬 서버의 주소는 Client에서 사용하므로 기억해두자.
3. GrpcClient 프로젝트 생성
[새 프로젝트 만들기] → 콘솔앱 선택 → 프로젝트 이름 GrpcClient로 생성
꼭 콘솔 앱일 필요 없으며 가장 쉬운 방법이 콘솔 앱이라 선택
4. NugetPackege 설치
GrpcClient 프로젝트 마우스 오른쪽 버튼 클릭 후 NeGet 패키지 관리 선택
아래 목록 검색 후 Install
- Google.protobuf
- Grpc.Net.Client
- Grpc.Tools
또는 패키지 관리자 콘솔에 아래 붙여넣기
- NuGet\Install-Package Google.Protobuf --version 3.24.4
- NuGet\Install-Package Grpc.Net.Client -Version 2.58.0
- NuGet\Install-Package Grpc.Tools -Version 2.59.0
5. GrpcServer의 Protos 폴더를 GrpcClient에 복사/붙여넣기
- GrpcClient 프로젝트 더블 클릭 후
GrpcServices="Client"
로 수정<ItemGroup> <Protobuf Include="Protos\greet.proto" GrpcServices="Client" /> </ItemGroup>
6. GrpcClient의 Program.cs 코드 수정
- GrpcClient 프로젝트만 빌드
- 아래와 같이 Program.cs 코드 수정(localhost는 본인에 맞게 대입)
Program.cs
using Grpc.Net.Client;
using GrpcService;
namespace GrpcClient;
class Program
{
static async Task Main(string[] args)
{
var input = new HelloRequest { Name = "TIm" };
var channel = GrpcChannel.ForAddress("https://localhost:"); // 본인 local host에 맞게 수정
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(input);
Console.WriteLine($"reply : {reply.Message}");
Console.ReadLine();
}
}
시작 프로젝트 설정 후 실행
- 여러 개의 시작 프로젝트로 설정하고 서버 프로젝트가 먼저 수행되게 순서를 조정한다.
- 없음을 시작으로 선택한다.
- 그 후 Run
결과
참고 : https://www.youtube.com/watch?si=rJ1WYZjo7L7T_IUf&v=QyxCX2GYHxk&feature=youtu.be
'gRPC' 카테고리의 다른 글
[gRPC] C#으로 gRPC 서버, 클라이언트 만들기 - 튜토리얼(2) (0) | 2023.11.12 |
---|