Протокол сериализации данных для динамического сообщения и TLV?

Есть ли протокол сериализации данных, который позволяет dynamic message types а также TLV kind of encoding данных?, посмотрев на протокол Protocol Buffer и Apache, они, похоже, этого не делают.

У меня есть некоторые требования, например: если я хочу отправить некоторые структуры данных:

  1. У него должен быть какой-то способ кодирования данных (например, в кодировке значений длины типа), чтобы получатель знал, что его чтение и как организованы данные (что-то вроде дерева данных). Буферы Protocl говорят, что вы должны отслеживать свои данные сторона получателя.

  2. Это также должно обеспечить какой-то способ динамического добавления данных. Я думаю, что в PB и они должны знать все данные заранее, я прав?

Есть ли альтернатива кодировать структуру данных в формате TLV самостоятельно, а затем использовать что-то вроде boost :: serialization для сериализации по проводам?

2

Решение

Протобуфы могут быть самоописуемыми, если вы связываете свое сообщение DescirptorSet, Увидеть Сообщения с самоописанием из документов. Вы даже можете генерировать новые дескрипторы (новые прототипы) во время выполнения, если вы действительно хотите.

Тем не менее, звучит так, как будто вы были бы счастливее с JSON или MsgPack, которые не содержат схем.

1

Другие решения

Вы пробовали что-то более общее, например, JSON или Binary JSON? Он не определяет длину как таковую, но длина обнаруживается довольно легко. Для этого также имеется множество библиотек поддержки C ++.

0

По вопросам рекламы [email protected]