Domanda

Sto guardando protobuf-net per l'attuazione di vari formati di messaggistica, e mi piace particolarmente l'approccio basato sui contratti come non ho a pasticciare con il compilatore proto. una cosa che non riuscivo a trovare le informazioni su è, questo rende difficile lavorare cross-platform? ci sono alcune applicazioni C ++ che avrebbe bisogno di essere in grado di analizzare i dati PB, e pur comprendendo che serializza protobuf-net per il formato standard PB, se uso l'approccio del contratto e non un file di proto, come fa il C ++ lato parse i dati?

posso (dovrebbe?) Io scrivere un file proto separata per i (pochissimi) casi in cui C ++ ha bisogno di capire i dati? e se sì, esattamente come faccio a sapere che la classe C ++ generato dal file proto sta per abbinare i dati dal no-proto-file C # parte?

È stato utile?

Soluzione

Sì, almeno in teoria dovrebbero corrispondere a livello binario, ma si potrebbe desiderare di limitarsi ai tipi che mappano semplicemente a "Proto" - in modo da evitare cose come DateTime, eredità ([ProtoInclude]), ecc Questo anche ha il vantaggio che si dovrebbe essere in grado di utilizzare:

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

per ottenere il Proto; esso (GetProto) non è al 100%, ma funziona per i tipi di base. Ma in ultima analisi, la risposta è "test e tweaking"; forse Design per l'interoperabilità fin dall'inizio -. vale a dire testare questa prima

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top