Comment générer un fichier .proto à partir d’une classe C # décorée d’atsortingbuts?

J’essaie de penser à Google Protobuf. J’ai trouvé quelques implémentations de protobuf en C # mais il semble qu’elles manquent d’une fonctionnalité: la possibilité de générer automatiquement des fichiers .proto à partir d’une classe C # existante décorée d’atsortingbuts.

La raison pour laquelle je souhaite le faire de cette façon au lieu de passer des classes C # générées automatiquement à partir du fichier .proto est que les classes C # sont déjà définies dans mon projet et que je ne souhaite pas les dupliquer uniquement pour satisfaire ProtoBuf.

Quelqu’un at-il rencontré un tel scénario?


Mettre à jour

Est-ce possible de simplement décorer une classe C # sans utiliser de fichier .proto pour utiliser protobuf?

Bonnes nouvelles; ce que vous avez décrit (avoir des classes C # existantes) est le cas d’utilisation attendu de protobuf-net. Tous les fichiers .proto (“protogen”, le complément VS, etc.) ont tous été ajoutés après coup . Le kernel de protobuf-net ne les connaît pas et ne s’en soucie pas.

Les tampons de protocole définissent un DSL (.proto, comme vous l’avez mentionné) partagé entre les implémentations et utilisé (parfois) pour la génération de code. Lorsque j’ai écrit Protobuf-net pour la première fois, l’aspect de la génération de code n’était pas ma principale préoccupation – simplement que les développeurs .NET sont généralement coupables (moi-même inclus) de “mise en œuvre en premier” plutôt que de “contrat en premier”.

En conséquence, protobuf-net n’a pas besoin des fichiers .proto pour fonctionner; une classe atsortingbuée suffit pour sérialiser / désérialiser sans ambiguïté. Il suffit d’utiliser Serializer.Serialize , .Merge et .Deserialize (etc.).

Cela dit; cela inclut un support très sous-développé et expérimental pour cela:

 ssortingng proto = Serializer.GetProto(); 

Ceci est loin d’être complet, mais peut fonctionner pour des types simples. Si vous rencontrez des problèmes spécifiques, signalez-le-moi (ajoutez un commentaire ou enregistrez un problème). Toutefois; la plupart du temps, les personnes intéressées par .proto écrivaient le .proto en premier et travaillaient à partir de là.

Des exemples de types de travail décorés sont présentés sur la page d’accueil du projet ; que vous utilisiez des atsortingbuts WCF, des atsortingbuts xml ou des atsortingbuts protobuf-net (ce dernier vous permet de mieux contrôler certains points de sérialisation spécifiques, tels que l’inheritance et les dispositions numériques).

Avant que Skeet Marc ne se présente à nous ici et qu’il ait des hauts et des bas, permettez-moi de signaler protobuf.net.