[Tip,C#] protobuf 메시지 정의 나누어 배포하기
페이지 정보
작성자 책읽는아이 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일19-09-18 11:21 조회3,426회 댓글3건관련링크
본문
서버간 메시지 정의나 클라이언트에 노출시키고 싶지 않은 메시지/데이터 정의들을 따로 관리하고 싶을 때 다음과 같이 해주시면 약간이나마 편하게 하실 수 있습니다.
1. 메시지 정의용 lib 프로젝트를 생성하고 Nuget 에서 Google.Protobuf 와 Grpc.Tools 를 추가해줍니다.
이 때, Visual Studio 상에서 구분된 프로젝트를 만들어주는데 프로젝트 파일의 위치는 동일 위치로 해줍니다. 다음과 같이요.
그리고 proto 파일들을 생성해주고 해당 프로젝트에서 필요한 것은 속성에서 Build Action 은 Protobuf compiler 로, (gRPC 를 쓰지 않는다면) gRPC Stub Classes 는 Do not generate 로 바꿔줍니다.
프로젝트에 포함될 필요가 없는 proto 파일은 우클릭후 "프로젝트에서 제외" 를 클릭해 프로젝트에서 빼줍니다. (그냥 놔둬도 빌드액션이 정의가 안되면 무관하긴 하지만...)
2. msg.proto , server.proto 두 개의 proto 파일을 작성했고 서버간 메시지 정의는 server.proto 에만 담았다고 가정해 보겠습니다.
빌드 후에 dll 들을 DotPeeker 로 열어보면 다음과 같이 각각 잘 구별되서 담겨 있는 것을 확인할 수 있습니다.
Messages.dll
Messages.Server.dll
클라이언트에는 Messages.dll 을 배포하고 서버에는 Messages.Server.dll 을 배포하면 됩니다.
댓글목록
리틀캔들님의 댓글
리틀캔들 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일
매우 유용해 보여서 IT Tip으로 내용을 옮겼어요^^
감사합니다!
책읽는아이님의 댓글
책읽는아이 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일
꼭 proto 파일에만 해당 하는건 아니고 일반적인 cs 클래스 역시 마찬가지로 관리하면 됩니다.
결국 한줄 요약하면 '프로젝트를 동일한 경로에 위치시켜라' 입니다. ..
tip 이라고 하기도 좀 그런... 별거 없죠 'ㅅ'a
리틀캔들님의 댓글
리틀캔들 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물
근데 막상 개발하다 보면 이런 별거 아닌걸로 시간을 많이 쓰죠 ㅜㅜ