2010-10-11 4 views
14

Stiamo cercando di utilizzare i buffer di protocollo di Google per gestire la serializzazione tra un'applicazione C++ e un'applicazione C# tramite rete.Buffer del protocollo di Google in C#

La mia domanda è, ho trovato un paio di diverse versioni per C#. Entrambi guardare piuttosto bene, però, qualcuno sa ciò che è diverso (se non altro) tra i due

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

Il primo è scritto da [Marc Gravell] (http://stackoverflow.com/users/23354/marc-gravell) (classificato secondo nella reputazione qui), e il secondo è scritto da [Jon Skeet] (http://stackoverflow.com/users/22656/jon-skeet) (classificato al primo posto nella reputazione qui). Anche se non ho mai usato nessuno di questi, scommetto che non potresti sbagliare in nessun modo. –

+2

Dato che Jon Skeet in realtà funziona per Google, proverei prima la sua versione. – Gabe

+3

Ma quale è meglio? C'è solo un modo per scoprirlo ... LOTTA! (questo potrebbe avere senso se sai chi è Harry Hill - altrimenti potrebbe sembrare insolitamente aggressivo ...) –

risposta

13

Certo; dotnet-protobufs è una porta della versione java, quindi condivide un API e un approccio molto simili all'implementazione core di google; codice-gemma, immutabilità, ecc.

Protobuf-net è byte compatibile, ma è una completa re-implementazione da zero, seguendo gli idiomi .NET standard, quindi è familiare agli utenti di XmlSerializer, ecc. Funziona anche contro mutabile oggetti (e immutabile seconda della configurazione, e le strutture in v2), ed ha ganci opzionali per WCF, servizi remoti, ecc

Entrambi possono funzionare da .proto (probabilmente dotnet-protobufs è meglio a questo che protobuf- netto); ma protobuf-net può funzionare contro .net poco/DTO ecc. senza .proto o alcun codegen.

Inoltre, protobuf-net offre cose come il supporto di ereditarietà, ma non si può scegliere di utilizzarlo nello scenario in quanto non si mappa facilmente con le definizioni di .proto.