metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2015-09-02 06:11 pm

Генераторы сериализаторов-десериализаторов.

Меня немного удивляет существование protocol buffers, и еще больше удивляет, когда кроме них изобретают еще и Apache Thrift, а потом еще и https://capnproto.org/ и https://google.github.io/flatbuffers/.

Все эти протоколы подразумевают, что система разрабатывается одной и той же командой (или двумя тесно взаимодействующими) с обоих сторон, что типы передаваемых меняются достаточно синхронно, т.е. что протокол за 2-3 итерации не превратится во что-нибудь вроде "у нас тут 100 опциональных полей на каждый случай жизни".

А вот генератора парсеров на случай "протокол дали ембеддеры-психи, засунув в 8 бит 2 флага и 2 поля по 3 бита с длиной дополнительных данных в пакете" или "обвязка протокол описана в виде ABNF в RFC, а в payload опять поселились эмбеддеры с бинарными форматами" я чего-то не видел.

[identity profile] ilya-portnov.livejournal.com 2015-09-02 05:17 pm (UTC)(link)
У нас есть инхаус-решение для этого, самописное. Описываем внешний формат, и по нему генерится парсер и сериализатор. Только вот делали его, похоже, люди с GUI головного мозга, поэтому основной способ описания формата — мышкой в замысловатых кривоватых редакторах. Ну или можно открыть сохранённое описание и править руками — но оно хранится в адовой структуры XML-е...

[identity profile] worm-ii.livejournal.com 2015-09-03 06:39 am (UTC)(link)
Описываем формат "адовой структуры XML-я", по нему генерим парсер, из которого можно уже сделать сериализатор в правильную структуру :-)