2009-12-28 5 views
3

다양한 메시징 형식을 구현하는 데 protobuf-net을 사용하고 있습니다. 특히 proto 컴파일러를 망칠 필요가 없어 계약 기반 방식을 선호합니다. 정보를 찾을 수없는 한 가지 점은 크로스 플랫폼 작업이 어렵다는 것입니까? PB 데이터를 파싱 할 수 있어야하는 몇 가지 C++ 응용 프로그램이 있습니다. protobuf-net이 PB 표준 형식으로 직렬화된다는 것을 알고 있지만 프로토 타입 파일이 아닌 계약 방식을 사용하면 C++ 측에서 구문 분석을 수행하는 방법을 설명합니다 자료?protobuf-net with C++

(해야합니까?) C++에서 데이터를 이해해야하는 (거의) 경우를 위해 별도의 프로토 파일을 작성할 수 있습니까? 그렇다면 proto 파일에서 생성 된 C++ 클래스가 원시 파일이 아닌 C# 측의 데이터와 일치한다는 것을 정확히 어떻게 알 수 있습니까?

답변

1

예, 이론적으로 적어도 그들이 바이너리 수준에서 일치해야합니다,하지만 당신은 단순히 ".proto을"지도 유형에 자신을 제한 할 수 있습니다 - 그래서 DateTime, 상속 ([ProtoInclude]) 같은 것들을 피하기 등이 또한 다음을 사용할 수 있어야한다는 이점이 있습니다.

string proto = Serializer.GetProto<YourType>(); 

.proto; 그것 (GetProto)는 100 %가 아니지만 기본 유형에 적용됩니다. 하지만 궁극적으로 대답은 "테스트 및 조정"입니다. 처음부터 interop을 디자인 할 것입니다. 즉 일찍 테스트하십시오.