본문 바로가기
다물칸 주소복사
조회 수 376 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form
구분 팁&트릭
출처 내가작성

개요

2008년도에 구글에서 소개된 것으로 이기종 언어간 데이터를 교환할 때 사용하는 프로토콜이다. 


기술 히스토리

TCP/IP를 이용한 메시지 교환방식 > RPC (Remote Procedure Call) > RPC-XML > SOAP > REST-Json > Protocol Protocol (2008) > GRPC (2015)

로 파악했는데 틀린내용이면 답변 부탁드려요. 


사용방법


1. Protocol Buffer 설치

Nuget에서 Protobuf-net 를 설치한다. 


2. 클래스 생성

아래 형태대로 생성한다. 

[ProtoContract]
public class MST_AC_LGIN_INPUT
{
    [ProtoMember(1)]
    public string UserID { getset; }
 
    [ProtoMember(2)]
    public string UserPassword { getset; }
 
    public MST_AC_LGIN_INPUT()
    {
        UserID = string.Empty;
        UserPassword = string.Empty;
    }
}
이를 Serialze하면
package {네임스페이스};

message MST_AC_LGIN_INPUT {
   optional string UserID = 1;
   optional string UserPassword = 2;
}

출처: https://csharphardcoreprogramming.wordpress.com/2014/01/31/protocol-buffers-part-3-advanced-tcp-networking/ 
 - ProtoBuf-Net을 이용해 Network Stream으로 송수신할 수 있는 C#예제 
위 기반으로 C#끼리는 엄청 잘된다. 
그런데 원래 하려고 했던 리눅스의 C++과 윈도우의 C#이 안되는 거다.

위 출처 소스를 보다보면 ProtoBuf.prefixStyle를 설정하는 부분이 있는데
리눅스로부터 받고 보내는 부분은 Base128로 설정해야 한다는 것. 
추측으로 윈도우계열은 Fixed32가 정상이지만 리눅스와의 통신은 Base128을 기억하자. 
ProtoBuf.PrefixStyle.Base128