2012-07-20 5 views
1

저는 WCF 서비스와 함께 protobuf-net 라이브러리를 사용할 것입니다. 클라이언트는 Java-Android이고 나는 그 쪽의 proto 파일로 작업한다.Protobuf-net 및 .proto 파일?

.NET 측에서 수동으로 클래스를 코딩해야합니까? 아니면 protobuf-net이 .proto 파일을 어떻게 든 지원해야합니까?

답변

5

interop에서 작업하는 경우 .proto를 시작하는 것이 가장 좋습니다. protobuf-net의 경우 명령 줄 도구 "protogen"과 VS IDE 추가 기능이 있습니다.이 도구를 사용하면 다른 플랫폼 용 코드를 생성하는 것과 비슷한 protobuf-net 호환 클래스를 .proto에서 만들 수 있습니다. 둘 다 protobuf-net 프로젝트 사이트에서 구할 수 있습니다. 클래스를 이미 가지고 있다면 protobuf-net 클래스에서 .proto를 생성 할 수있는 지원도 있습니다. 그러나 이것은 불완전합니다 (사실 v2에서는 어젯밤에만 작성했기 때문에 아직 공식 다운로드되지 않았습니다).

크로스 플랫폼을 사용하는 경우 protobuf-csharp-port를 고려할 수도 있습니다. 이것은 Java API와 유사한 API를 보유하고있는 Jon에 의한 별도의 병렬 구현입니다. 플랫폼간에 유사한 API를 사용하는 것이 편리 할 수 ​​있습니다.

+0

마크, POCO ->. proto가 공식적 일 때 대략적인 견적이 있습니까? 난 JSON에서 마이 그 레이션 해요 그래서 C#을 측면 - 포코, 안드로이드 측면에서 - POJO :) 안드로이드에서 지금 proto와 함께 작동 _have_ .proto 파일을 만들 수 있습니다. 나는 protobuf-net이 어떻게 작동 하는지를 좋아하는데, 이제는 .proto로부터 클래스를 생성하여 POCO의 것과 일치하거나 수동으로 편집 할 필요가있다. (nono처럼 보임) – katit

+0

@katit * 문자 그대로 * v2의 첫 번째 컷을 썼다. GetProto/GetSchema 지난 밤. 그것이 필요로하는 것은 : 나에 의한 더 많은 테스트, 그리고 b : "야생에서 일하는 것"에 대한 것입니다. 언제든지이 문제를 알려 주셔서 알려드립니다. 당신이 무슨 뜻인지 안다면, 증거로부터 확신이 나온다 ... –

+0

나는 protogen을 사용하기 시작했지만 커맨드 라인은 실패하고 마침내 VS 통합이 작동하지만 이전의 protobuf-net.dll을 참조해야하고 작동하게 만든다. 다시 생성 한 후에? 이상적으로는 내 개발을 위해 1 개의 공유 .proto 파일을 유지하고 싶습니다. 예, 테스트 해 드리겠습니다. – katit

1

Java와 상호 운용되므로 .NET 클래스를 작성하면 안되며 대신 .proto 파일에서 C# 클래스를 생성해야합니다.

protobuf-net (아직 광범위하게 Java protobuf를 사용 했음)을 사용하지 않았지만 supposedly there's a Visual Studio tool은 .proto 파일에서 자동으로 C# 코드를 생성합니다. 명령 줄 도구도 분명히 있지만, it seems that may not always be available입니다.

관련 문제