Среды сериализации двоичных протоколов

Есть несколько отличных библиотек для десериализации двоичных форматов. Мне очень нравится декларативный подход kaitai и подход nom, использующий Rust.

Однако я не знаю хороших подходов к сериализации двоичных форматов.

Например, у вас часто бывает так, что вам нужно записать длину сообщения прямо в заголовок сообщения, но на самом деле вы не знаете точную длину сообщения в этот момент, потому что она зависит от многих полей, которые находятся ниже по потоку от заголовка. И иногда вам также приходится иметь дело с выравниванием заполнения, что может быть громоздким.

Знаете ли вы какие-либо решения подобных проблем?


person user3637203    schedule 13.04.2018    source источник


Ответы (1)


Пожалуйста, взгляните на ASN.1, в котором решили эту проблему много лет назад и до сих пор продолжают широко использоваться в критической инфраструктуре во многих различных отраслях. Он не зависит от языка программирования и архитектуры машины, поэтому вы можете настроить связь независимо от того, использует ли один узел C на машине с прямым порядком байтов, а другой использует Java или C# на машине с прямым порядком байтов. Проблемы заполнения структуры легко решаются качественными инструментами для ASN.1. Хороший список инструментов (как бесплатных, так и коммерческих) доступен по адресу Инструменты ASN.1 страницы проекта ITU-T ASN.1.

person Paul Thorpe    schedule 16.04.2018