пятница, 24 октября 2014 г.

[prog.flame] Странные впечатление от знакомства со спецификацией AMQP

Пытаюсь познакомиться со стандартом AMQP 1.0. Обычно я изучаю спецификации протоколов, как минимум, в три прохода. Первый раз просто беглое прочтение текста, без глубокого погружения и попыток связать концы с концами. Второй раз более внимательное изучение, в результате которого должна сложиться целостная верхнеуровневая картинка. Третий раз -- уточнее деталей, которые выпали из поля зрения при первых двух проходах. Если первый раз чтение идет прямолинейно, от начала до конца документа, то последующие проходы -- это уже сплошное перепрыгивание из одной главы в другую, дабы сшить уточнить и связать друг с другом какие-то моменты, описанные в разных частях документа. Как раз для того, чтобы знать, куда "прыгать" и нужен первый, неглубокий и прямолинейный проход по всему тексту.

Так вот, вчера начал читать текст стандарта версии 1.0. Пока прошел всего половину, около 60 страниц. Впечатления странные. Если несколько моментов, мимо которых без сарказма пройти невозможно :)

Первое, что бросилось в глаза -- это попытка расписать структуру бинарного протокола посредством BNF нотации:

Штука для меня весьма непривычная. По крайней мере сходу не удалось вспомнить чего-либо похожего. Что, на мой взгляд, не удивительно, т.к. есть более привычные и наглядные способы описания бинарных данных в транспортных протоколах. Собственно, авторы спецификации AMQP от этого сами никуда не ушли:

Дальше больше. Зачем-то авторам спецификации потребовалось в тексте спецификации использовать XML для описания базовых примитивных типов:

Почему в тексте спецификации нельзя было использовать обычные таблички, как это делают в нормальных стандартах:

не очень понятно. Есть подозрение, что те люди, которые делали первую реализацию AMQP, использовали XML для генерации кода сериализатора/десериализатора протокола. Ну а потом, дабы не утруждать себя лишними действиями, просто скопировали куски XML из своего внутреннего инструмента в стандартную спецификацию.

Что еще вызывает недоумение, так это обилие графических схем, выполненных ASCII-шной псевдографикой. Эдакий привет из 80-х:

Что-то подобное в массовом порядке я наблюдал в GSM-овских протоколах, когда впервые с ними столкнулся где-то в 2001-м году. Да и то, со временем GSM/3GPP спецификации становились все более и более современными. Не говоря уже про стандарты, появившиеся уже в XXI-ом веке (вроде DDS).

Так что пока какой-то мягкий когнитивный диссонанс по ходу чтения. С одной стороны BNF и XML, с другой ASCII-графика.

Ну и по ходу чтения складывается ощущение, что спецификацию писали люди, не очень справляющиеся с задачей просто, доступно и лаконично описать свой протокол. Как-то все мутно. Вроде бы и не сложные вещи расписываются, но блин, не оставляет впечатление, что как-то неумело и неразумно, все размазано, запутанно и можно было бы описать все тоже самое намного проще и понятнее. Хотя, возможно я просто избалован GSM/SMPP/EMI. Там у людей соответствующий бэкграунд был, потому и результат отменный. А здесь спецы из финансового, а не телекомовского сектора поработали. Ну и, собственно... ;)

Комментариев нет: