2014-01-08 2 views
2

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

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

Спасибо заранее! :)

+0

В буферах протокола уже есть понятие «повторяющегося» поля, но нет действительно рекурсивной структуры. Насколько я знаю, сообщение не может содержать копию самого себя. –

ответ

2

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

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

+0

Спасибо! Я собираюсь сделать некоторую практику с PB и Thrift, чтобы увидеть, сколько усилий они могут сократить по сравнению с существующей реализацией. –

0

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

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

Смежные вопросы