2013-10-02 5 views
1

Windows에서 실행되는 .NET 응용 프로그램에서 두 컴퓨터 간의 전용 이더넷 연결을 통해 Linux에서 실행되는 C++ 응용 프로그램으로 명령을 실행해야하는 응용 프로그램이 있습니다.대형 메시지가 포함 된 교차 플랫폼 RPC ​​

내 자신의 프로토콜을 롤링하는 대신 RPC 표준 양식을 사용하는 것을 선호합니다. 이전에는 크로스 플랫폼 애플리케이션에 XML RPC를 사용했지만 이러한 특정 명령은 자주 전송되는 명령과 함께 많은 수의 데이터 (명령 당 수천 개의 이중 부동 소수점 값)를 포함해야하므로 어떤 종류의 이진 직렬화가 더 적합합니다. 따라서 프로토콜 버퍼를 살펴 보았습니다. 그래서

, 몇 가지 질문 :

  1. 내가 프로토콜 버퍼가 직렬화 형식을 정의하는 것을 알고 있지만를 사용하여 크로스 플랫폼 RPC를 수행하는 방법에 대한 인정 업계 표준이?
  2. 프로토콜 버퍼는 가변 크기 배열로 중첩 된 데이터 구조를 나타내는 데 적합합니까? 명령 당 점수의 수는 가변적이며 데이터의 가장 자연스러운 표현은 각각 포인트 배열을 포함하는 구조체의 배열입니다. 이러한 모든 배열은 주어진 명령에 대해 가변 크기를 갖습니다.
  3. 플랫폼 간 통신에 프로토콜 버퍼를 사용할 때 겪었던 문제가 있습니까?

답변

2
  1. 는 아니, 일반적으로 표준을 수용 없다. 일부 라이브러리는 자체적 인 RPC 구현을 제공하지만 특히 인기가없는 라이브러리는 없습니다.

  2. 제 의견으로는 꽤 좋습니다. 일부 라이브러리는 지연 디코딩을 허용하기 때문에 데이터의 일부만 필요할 경우 모든 중첩 구조를 디코딩 할 필요가 없습니다.

  3. RPC 형식이 정의되지 않은 것 외에도 메시지의 구성은 정의되지 않습니다. 따라서 길이 필드를 처음에 추가하는 것과 같은 몇 가지 사용자 지정 방법을 수행해야합니다. 정의되지 않은 또 다른 부분은 전송되는 메시지의 유형을 식별하는 방법입니다. 자신의 프로젝트에 대해이를 명확하게 정의하십시오.

관련 문제