2008-12-04 8 views
1

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

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

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

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

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

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

ответ

2

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

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

Для получения информации, то Protobuf-чистый двигатель совместим с большинством XmlSerializer классов (и DataContractSerializer, а в последнее BinaryFormatter) - так что если ваш код в настоящее время работает как XML, вероятно, мы можем заставить его работать в Protobuf-сети. Никаких гарантий, конечно ...

+0

Очень интересно! Он поддерживает это сейчас? – asgerhallas 2009-05-13 17:10:05

2

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

+0

Действительно я делаю; Я хотел добавить код для заполнения дескриптора из модели в памяти, сериализовать дескриптор как xml, а затем запустить его через xslt, чтобы генерировать прототип, то есть полную противоположность тому, что он делает сейчас. Он должен работать, хотя ... несколько дней усилий. – 2008-12-04 23:34:25