Есть ли протокол сериализации данных, который позволяет dynamic message types
а также TLV kind of encoding
данных?, посмотрев на протокол Protocol Buffer и Apache, они, похоже, этого не делают.
У меня есть некоторые требования, например: если я хочу отправить некоторые структуры данных:
У него должен быть какой-то способ кодирования данных (например, в кодировке значений длины типа), чтобы получатель знал, что его чтение и как организованы данные (что-то вроде дерева данных). Буферы Protocl говорят, что вы должны отслеживать свои данные сторона получателя.
Это также должно обеспечить какой-то способ динамического добавления данных. Я думаю, что в PB и они должны знать все данные заранее, я прав?
Есть ли альтернатива кодировать структуру данных в формате TLV самостоятельно, а затем использовать что-то вроде boost :: serialization для сериализации по проводам?
Протобуфы могут быть самоописуемыми, если вы связываете свое сообщение DescirptorSet
, Увидеть Сообщения с самоописанием из документов. Вы даже можете генерировать новые дескрипторы (новые прототипы) во время выполнения, если вы действительно хотите.
Тем не менее, звучит так, как будто вы были бы счастливее с JSON или MsgPack, которые не содержат схем.
Вы пробовали что-то более общее, например, JSON или Binary JSON? Он не определяет длину как таковую, но длина обнаруживается довольно легко. Для этого также имеется множество библиотек поддержки C ++.