Question

Je regarde protobuf-net pour la mise en œuvre de divers formats de messagerie, et je aime particulièrement l'approche contractuelle que je n'ai pas salir avec le compilateur proto. une chose que je ne pouvais pas trouver assez d'informations sur est, cela rend difficile le travail multi-plateforme? il y a quelques C ++ des applications qui ont besoin d'être en mesure d'analyser les données PB, et même si je comprends que sérialisés de protobuf net au format standard PB, si j'utilise l'approche contractuelle et non un fichier proto, comment l'analyse syntaxique du côté C ++ les données?

peut (doit?) J'écrire un fichier proto séparé pour les (très rares) cas où C ++ a besoin pour comprendre les données? et si oui, comment puis-je savoir exactement que la classe C ++ générée à partir du fichier proto va correspondre les données de la non-proto-file côté C #?

Était-ce utile?

La solution

Oui, en théorie au moins, ils doivent correspondre au niveau binaire, mais vous pouvez vous limiter à des types qui tracent simplement « .proto » - afin d'éviter des choses comme DateTime, l'héritage ([ProtoInclude]), etc. également a l'avantage que vous devriez être en mesure d'utiliser:

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

pour obtenir le .proto; il (GetProto) n'est pas 100%, mais cela fonctionne pour les types de base. Mais en fin de compte, la réponse est « test et de peaufinage »; concevoir peut-être Interop dès le départ -. à savoir tester ce début

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top