2010-10-11 13 views
14

Estamos buscando usar los búferes de protocolo de Google para manejar la serialización entre una aplicación C++ y una aplicación C# a través de la red.Buffers de protocolo de Google en C#

Mi pregunta es, he encontrado un par de verificaciones diferentes para C#. Ambos se ven bastante bien, sin embargo, ¿alguien sabe lo que es diferente (si acaso) entre los dos

  1. protobuf-net
  2. jskeet/dotnet-protobufs
+7

El primero está escrito por [Marc Gravell] (http://stackoverflow.com/users/23354/marc-gravell) (ocupa el segundo lugar en reputación aquí), y el segundo está escrito por [Jon Skeet] (http://stackoverflow.com/users/22656/jon-skeet) (ocupa el primer lugar en reputación aquí). Aunque nunca he usado ninguno de estos, apostaría a que no puedes equivocarte de ninguna manera. –

+2

Dado que Jon Skeet en realidad trabaja para Google, primero probaría su versión. – Gabe

+3

Pero, ¿cuál es mejor? Solo hay una forma de descubrir ... ¡LUCHA! (Esto podría tener sentido si sabes quién es Harry Hill; de lo contrario, puede sonar inusualmente agresivo ...) –

Respuesta

13

Claro; dotnet-protobufs es un puerto de la versión java, por lo que comparte una API y un enfoque muy similares a la implementación principal de google; código-gema, inmutabilidad, etc.

Protobuf-net es compatible con bytes, pero es una completa implementación desde cero, siguiendo las expresiones idiomáticas .NET estándar, por lo que es familiar para los usuarios de XmlSerializer etc. También funciona contra mutable objetos (e inmutable en función de la configuración y estructuras en v2), y tiene ganchos opcionales para WCF, la comunicación remota, etc.

Ambos pueden trabajar desde .proto (posiblemente dotnet-protobufs es mejor en esto que protobuf- red); pero protobuf-net puede funcionar contra .net poco/DTO existente, etc., sin .proto ni ningún codegen.

Además, protobuf-net ofrece cosas como soporte de herencia, pero es posible que no elija usar eso en su escenario, ya que no se asigna tan fácilmente a las definiciones de .proto.

Cuestiones relacionadas