Генерация определения буферов протокола
-
19-08-2019 - |
Вопрос
У меня есть большой набор XML-файлов собственной схемы - XML-файлы определяют двоичный протокол связи (структуру сообщения).
Я бы хотел использовать технологию буферизации протоколов Google.
Я использую существующий код для загрузки XML-файлов в объектную модель (в память).Я бы хотел сгенерировать файл .proto на основе этой объектной модели.
итак, в основном то, что я ищу, - это код / библиотека (на C # / .NET), которая представляет формат файла .proto в виде объектной модели и может сохранять эту объектную модель в файл .proto.
Я взглянул на dotnet-protobufs Джона Скита, думаю, я понимаю, что он делает (генерирует код c # на основе файлов .proto)
Однако я не выяснил, могу ли я использовать это для своего проекта (вероятно, там есть объектная модель формата .proto, но, вероятно, только код, который может анализировать этот формат, а не записывать его)
Решение
protobuf-net (моя версия буферов протокола в .NET) имеет примитивный поддерживается генерация прототипов файлов, но заполнить пробелы было бы несложно.Сначала я сосредоточился на ядре движка, затем на создании C # из proto.Написание xslt для генерации прототипа на основе объектной модели не сильно отличалось бы.Однако это займет несколько дней...(На данный момент у меня ограниченное время).
Если это будет полезно, пожалуйста, дайте мне знать.
Для информации, движок protobuf-net совместим с большинством XmlSerializer
классы (и DataContractSerializer
, и недавно BinaryFormatter
) - итак, если ваш код в данный момент работает как xml, мы, вероятно, сможем заставить его работать в protobuf-net.Никаких гарантий, конечно...
Другие советы
Мой код может сериализовываться и десериализовываться только в двоичный файл и текст.Однако я считаю, что Проект Марка Гравелла обладает возможностями XML.На самом деле, я полагаю, что он генерирует код на C #, основанный на загрузке двоичной версии файла .proto (который сам кодируется как protobuf), записи его в формате XML, а затем применении к нему XSLT...