Рекурсивные структуры данных в протокольных буферах, Apache Thrift или любом другом протоколе сериализации структуры данных?

У меня достаточно теоретических знаний о буферах протоколов, Apache Thrift и о других протоколах сериализации структуры данных. Мой вопрос заключается в том, что если мне нужно определить рекурсивную структуру данных (связанные списки, деревья поиска и т. Д.) Или какую-то связь между различными объектами, то есть ли какой-нибудь встроенный стандартный способ, который буферы протокола или Apache Thrift обеспечивают для установления связи между различными структурами ( мы используем указатели в обычной практике программирования)? или мы должны продолжать использовать указатели для установления связи между различными объектами структуры данных?

Я хочу сделать это с C ++ API

Заранее спасибо! 🙂

2

Решение

Оба позволяют сообщению типа X содержать другие сообщения типа X, а также не позволяют сообщению содержать себя (в отличие, скажем, от сериализации Java). В противном случае было бы очень дорого для необычного случая.

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

2

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

Я знаю, что это миллион лет, но вот что-то: AMF (ActionScript Message Format). И, прежде чем вы убежите, крича в ночи … Это не так уж и плохо. И, в отличие от более популярных, он может делать круговые ссылки, никаких проблем нет. Много месяцев назад я написал декодер для этого формата. Во времена расцвета Flash раньше были реализации для некоторых других языков, если память обслуживала, было две или три библиотеки Java, библиотека Python, PHP, .NET, возможно, больше. Там также был один, написанный на C.

Сам формат может рассматриваться как расширенный набор JSON, даже если он появился задолго до этого. Он был предназначен для сериализации языка, производного от JavaScrip, но с некоторыми аннотациями типов, поэтому имел некоторые ограничения на типизацию. Его удобочитаемой формой является код ActionScript (очень похожий на JavaScript с некоторыми дополнительными ключевыми словами, связанными с аннотациями типов). Спецификация открыта и может быть найдена здесь: http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/amf/pdf/amf-file-format-spec.pdf

0

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