2020. 1. 10. 16:24 Network
Thrift에 대해서 [C# 한정]
Thrift를 현재 회사에서 사용하고 있는데 생각외로 문서나 포스팅이 없어서 간단하게 포스팅을 해본다
우선 Thrfit란 무엇인가?
thrift는 facebook에서 개발하고 현재는 Apache 재단에 의해서 관리, 개발되고 있는 라이브러리이다.
거두절미하고 장점과 단점을 말해보면,
우선 장점으로는 각기 다른 개발언어의 프로그램끼리 공통 RPC를 통해 통신할 수 있다는 점이 있고
반면 단점으로는 RPC관련 생성파일들의 코드가 매우 지저분하다는 점이다.
비슷한 RPC관련 라이브러리로 Google Protocol Buffer 라는게 있는것 같은데 여기서는 다루지 않겠다.
해당 라이브러리 다운로드 주소 : https://thrift.apache.org/download
위 주소에 가면 thrift-0.13.0.tar.gz 파일과 Thrift compiler for Windows (thrift-0.13.0.exe) 파일을 다운로드 받을 수 있다.
thrift-0.13.0 파일의 경우 압축을 해제해보면 tutorial 폴더 외 여러 폴더가 보이는데 우리는 C#만 사용할 것이기 때문에
thrift-0.13.0\lib\csharp\src 에 있는 파일들을 별도 프로젝트에 복사해 사용할 것이다.
thrift-0.13.0.exe 파일의 경우는 xxx.thrift 문서 파일에 명시된 정보들을 통해 RPC와 관련된 파일을 생성해준다.
struct SharedStruct {
1: i32 key
2: string value
}
service RPCTest
{
i32 sendPing(),
void sendPing2(),
oneway NotiTest(),
}
위 처럼 단순 struct부터 RPC인 service, 한방향 호출 RPC[리턴값이 oneway인 것] 까지 필요에 맞게 정의하면 된다.
그리고 thrift.exe 파일의 경우 우리가 추가적으로 thrift-0.13.0\compiler\cpp\compiler.sln을 통해서
추가타입 혹은 코드 변경을 통해서 커스터마이징 후 빌드하여 사용할 수 있게 되어 있다.
해당 exe 파일을 실행 시 매개변수로 몆가지 명령어를 같이 넣어줄 수 있는데
-out, --gen 명령어만 알아두어도 기능 테스트에는 충분할 것이다.
우선 -out 의 경우 우리가 thrift에 정의한 RPC 규격에 대한 cs파일이 위치할 폴더의 경로를 지정할 수 있다.
ex : -out ..\..\thrift\RPC
--gen의 경우 해당 RPC규격파일에 따른 코드를 생성 하기 위해서 어떠한 언어인지, 참고할 thrift 파일은 어디에 있는지를 지정해준다.
ex : --gen csharp:async .\TestRPC.thrift
Tip -
해당 thrift.exe. 파일의 경우 일일히 cmd 창등을 통해 실행하기 귀찮기 때문에 bat파일을 활용하면 좋다.
'Network' 카테고리의 다른 글
HTTP Protocol (0) | 2021.06.20 |
---|---|
OSI 7계층과 TCP/IP 4 계층 (0) | 2021.06.20 |
load balancing (0) | 2020.08.27 |
OSI 7계층와 TCP/IP 4 계층 (0) | 2020.08.27 |
RabbitMQ에 대해서 (0) | 2019.07.21 |