2011-01-26 1 views
2

Я работаю универсальный декодер Protobuf, который работает следующим образом:компиляции файлов прото во время выполнения

Пользователь может указать файл .proto во время выполнения и указать файл данных и программа будет отображать данные в файле основанный на определении .proto.

Чтобы сделать это, наиболее очевидные вещи кажутся мне, что мне нужно будет интерпретировать .proto-файл (или скомпилировать его), а затем использовать его для расшифровки сообщения protobuf. Любые идеи о том, как я могу продолжить это? Есть ли там библиотека, которая поможет мне в этом.

Как всегда, любая обратная связь очень ценится.

Спасибо!

+0

Кроме того - если вы заинтересованы в том, чтобы каким-то образом объединить силы в сторону улучшения protobuf на платформе .NET, дайте мне знать (моя контактная информация находится в моем профиле) –

+0

Я бы хотел сделать это через несколько месяцев. В этот момент я завершаю несколько крупных проектов, поэтому я не смогу потратить много времени на это. Но после этого я хотел бы помочь - будет поддерживать связь. Спасибо за приглашение. – Azeem

ответ

1

У меня есть смысл написать собственный парсер, но на данный момент Я просто использую «protoc» для синтаксического анализа .proto для бинарного файла protobuf. Затем я deserialize, используя мою собственную библиотеку protobuf, предоставляя мне заполненную объектную модель для работы.

Я не знаю, как далеко вы продвигаетесь, но вы также можете быть заинтересованы в некоторой поддержке времени выполнения в protobuf-net v2, которая позволяет отображать типы данных protobuf на лету. В качестве альтернативы также существует довольно многоразовая программа для читателей, которая может удовлетворить ваши потребности.

Если вы можете работать с XML, я включаю инструмент в protobuf-net, «protogen», который выполняет код-gen; но передайте в -t:xml, и он должен преобразовать .proto в XML для вас.

Iirc, «protoc» выводит protobuf, используя «descriptor.proto» из пакета google.

+0

Марк, спасибо за полезные указатели. Я дам вам знать, как это происходит. Я думаю, что мне нужно немного поработать и разработать стратегию. :) – Azeem