2008-12-04 6 views
1

J'ai un grand nombre de fichiers XML d'un schéma propriétaire - les fichiers XML définissent le protocole de communication binaire (structure de message). Je souhaite tirer parti de la technologie des tampons de protocole de Google. J'utilise du code existant pour charger les fichiers XML dans un modèle d'objet (en mémoire). Je souhaite générer un fichier .proto à partir de ce modèle d'objet. Donc, en gros, ce que je cherche est un code/une bibliothèque (en C#/.NET) qui représente le format de fichier .proto en tant que modèle objet et qui peut enregistrer ce modèle objet dans un fichier .proto.Génération d'une définition de tampons de protocole

Je pris un coup d'œil à dotnet-protobufs Jon Skeet, je pense que je comprends ce qu'il fait (génère le code C# basé sur des fichiers .proto)

Cependant, je ne figure pas si je peux l'utiliser pour mon projet (il a probablement le modèle d'objet au format .proto, mais probablement que le code qui peut analyser ce format et ne pas l'écrire)

Répondre

2

protobuf -net (ma version de tampons de protocole dans .NET) a primitive support pour générer des fichiers proto, mais il ne serait pas difficile de remplir les espaces. Je me suis d'abord concentré sur le moteur de base, puis sur la génération de C# de proto. Ecrire un xslt pour générer un proto à partir du modèle objet ne serait pas très différent. Cela prendrait quelques jours cependant ... (J'ai un temps limité en ce moment).

Si cela vous est utile, faites le moi savoir.

Pour info, le moteur protobuf-Net est compatible avec la plupart XmlSerializer classes (et DataContractSerializer, et récemment BinaryFormatter) - donc si votre code fonctionne actuellement comme xml, nous pouvons probablement le faire fonctionner dans protobuf-net. Aucune garantie, bien sûr ...

+0

Très interressant! Est-ce que cela supporte cela maintenant? – asgerhallas

+0

Il y a du code, mais je ne peux pas supporter la sortie - la génération proto est au mieux expérimentale. Assez curieusement, le proto-à-C# est beaucoup plus développé, même si c'était complètement après coup! Sérialiseur .GetProto() ... –

2

Mon code peut uniquement sérialiser et désérialiser en binaire et en texte. Cependant, je crois que Marc Gravell's project a des capacités XML. En fait, je crois qu'il génère du code C# basé sur le chargement de la version binaire d'un fichier .proto (lui-même encodé comme protobuf), l'écrivant comme XML, puis lui appliquant XSLT ...

+0

En effet je le fais; Je voulais ajouter du code pour remplir un descripteur à partir du modèle en mémoire, sérialiser le descripteur en xml, puis l'exécuter via un xslt pour générer le proto-le. Exactement le contraire de ce qu'il fait maintenant. Cela devrait fonctionner, cependant ... quelques jours d'effort, cependant. –

Questions connexes