Генерация определения буферов протокола - PullRequest
2 голосов
/ 05 декабря 2008

У меня есть большой набор файлов XML собственной схемы - файлы XML определяют двоичный протокол связи (структура сообщения).

Я бы хотел использовать технологию буферов протокола Google.

Я использую существующий код для загрузки файлов XML в объектную модель (в памяти). Я хотел бы создать файл .proto из этой объектной модели.

поэтому в основном я ищу код / ​​библиотеку (в C # /. NET), которая представляет формат файла .proto как объектную модель и может сохранить эту объектную модель в файл .proto.

Я посмотрел на dotnet-protobufs Джона Скита, думаю, я понимаю, что он делает (генерирует код c # на основе файлов .proto)

Однако я не понял, смогу ли я использовать его для своего проекта (там, вероятно, имеется объектная модель формата .proto, но, вероятно, только код, который может анализировать этот формат и не записывать его)

Ответы [ 2 ]

2 голосов
/ 05 декабря 2008

protobuf-net (моя версия буферов протокола в .NET) имеет поддержку примитива для создания прототипов, но заполнить пробелы не составит труда. Сначала я сконцентрировался на основном движке, а затем на поколении C # из прото. Написание xslt для генерации прото из объектной модели не сильно отличается. Хотя это заняло бы несколько дней ... (сейчас у меня ограниченное время).

Если это будет полезно, пожалуйста, дайте мне знать.

Для информации: механизм protobuf-net совместим с большинством классов XmlSerializerDataContractSerializer, а в последнее время BinaryFormatter) - поэтому, если ваш код в настоящее время работает как xml, мы, вероятно, можем заставить его работать в protobuf- сеть. Конечно, никаких гарантий ...

2 голосов
/ 05 декабря 2008

Мой код можно сериализовать и десериализовать только в двоичный и текстовый формат. Тем не менее, я считаю, проект Марка Гравелла имеет возможности XML. На самом деле, я полагаю, что он генерирует код C # на основе загрузки двоичной версии файла .proto (который сам кодируется как protobuf), записи его в виде XML и последующего применения к нему XSLT ...

...