Где находится спецификация формата Thrift? - PullRequest
16 голосов
/ 16 февраля 2011

Хотя формат Thrift относительно широко используется (и проект все еще жив), я не смог найти спецификации для базового формата данных. Или форматы, учитывая, что существует, по крайней мере, два формата; стандартный и компактный формат.

Учитывая его широкое использование, я надеюсь, что это просто мой плохой гугл-фу, и существует спецификация или спецификации (за пределами исходного кода). Если это так, пожалуйста, поделитесь!

РЕДАКТИРОВАТЬ: исходный код Java не так уж плохо для определения формата; см. TBinaryProtocol.java и TCompactBinaryProtocol.java; которые содержат примитивы, вызываемые сгенерированными классами (которые расширяют TBase)

РЕДАКТИРОВАТЬ 2: Хотя он не содержит спецификации формата, " отсутствует руководство " является хорошим чтением.

Ответы [ 2 ]

10 голосов
/ 17 апреля 2011

Формат сообщения Thrift зависит от выбранного протокола сериализации. Вы можете сериализовать объект Thrift, используя один из многих протоколов, включая TBinaryProtocol, TCompactProtocol, TJSONProtocol и другие скрытые параметры. Протокол описан абстрактно в оригинальном Thrift Whitepaper PDF в терминах API, но в настоящее время не определен нигде в проекте Apache Thrift.

Протокол TCompactProtocol чуть лучше определен в экономной вики , но не в простых терминах.

До тех пор, пока не будет доступна лучшая документация, вы также можете проверить код библиотеки Python вместе с документацией модуля Python struct в качестве другого варианта.

9 голосов
/ 04 октября 2016

У меня была та же проблема, и поэтому я решил написать спецификацию двоичного и компактного протокола Thrift.

Вы можете найти его здесь: https://erikvanoosten.github.io/thrift-missing-specification/

...