Рейтинг@Mail.ru
[Войти] [Зарегистрироваться]

Наши друзья и партнеры

UnixForum
Беспроводные выключатели nooLite купить дешевый 
компьютер родом из Dhgate.com

Lines Club

Ищем достойных соперников.

Библиотека сайта или "Мой Linux Documentation Project"

GNU Mailman

Глава 10 из книги "Архитектура приложений с открытым исходным кодом", том 2.

Оригинал: GNU Mailman
Автор: Barry Warsaw
Перевод: А.Панин

10.8. REST

Одно из ключевых архитектурных изменений в версии 3 системы Mailman заключается в удовлетворении запроса, предъявляемого к ней в течение многих лет: предоставления упрощенного способа интеграции Mailman со сторонними системами. Когда я был нанят компанией Canonical, являющейся корпоративным спонсором проекта Ubuntu в 2007 году, моя работа изначально заключалась в добавлении возможности использования списков рассылки в Launchpad, хостинг-платформу для совместной работы над программными проектами. Я знал, что версия 2 системы Mailman подходила для решения задачи, но при этом требовалось задействовать пользовательский веб-интерфейс системы Launchpad вместо стандартного пользовательского веб-интерфейса системы Mailman. Так как списки рассылки системы Launchpad практически всегда использовались в качестве дискуссионных списков рассылки, нам хотелось добиться сокращения различий в методах управления ими. Администраторы списков рассылки не должны иметь в распоряжении избыточное количество параметров конфигурации, доступных на стандартном сайте под управлением системы Mailman, поэтому оставалось дать ответ на вопрос о том, какие параметры могут понадобиться и будут представлены в пользовательском интерфейсе системы Launchpad.

В тот момент система Launchpad не являлась свободным программным обеспечением (это изменилось в 2009 году), поэтому нам пришлось проектировать уровень интеграции таким образом, чтобы код системы Mailman версии 2, распространявшийся в соответствиями с условиями лицензии GPLv2, не затрагивал код Launchpad. Это привело к выработке ряда архитектурных решений в ходе проектирования архитектуры уровня интеграции, которые были достаточно неочевидными и отчасти неэффективными. Так как на данный момент система Launchpad является свободным программным обеспечением, распространяемым в соответствии с условиями лицензии AGPLv3, эти решения на сегодняшний день не являются необходимыми, но работа над ними позволила получить полезные знания о том, как система Mailman без пользовательского интерфейса может быть интегрирована в состав сторонних систем. Стал очевидным тот факт, что основная часть системы, эффективно и надежно реализующая операции для работы со списком рассылки, может работать под управлением любого типа веб-интерфейса, включая интерфейсы на основе Zope, Django или PHP, а также вообще без пользовательского веб-интерфейса.

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

В версии 3 системы Mailman была применена модель передачи состояния представления (Representational State Transfer - REST) для внешнего административного управления. Модель REST основана на протоколе HTTP и стандартном формате представления объектов системы Mailman, JSON. Эти протоколы используются повсеместно и отлично поддерживаются большинством разнообразных языков программирования и окружений, делая интеграцию Mailman со сторонними системами достаточно простой. Модель REST отлично подходила для использования совместно с версией 3 системы Mailman, а сейчас большинство функций системы доступно при использовании REST API.

Это мощная парадигма, которую должно использовать большее количество приложений: предоставлять основную часть, которая качественно реализует базовые функции, предоставляя REST API для управления ею. REST API предоставляет дополнительный способ интеграции с системой Mailman, в дополнение к использованию интерфейса командной строки или разработки кода на языке Python для доступа к внутреннему API. Эта архитектура является очень гибкой и может быть использована и интегрирована такими способами, которые находятся за гранью стандартного видения системных архитекторов.

Такая архитектура позволяет не только вести разработку большим количеством способов, но даже проектировать и реализовывать официальные компоненты системы. Например, новый официальный пользовательский веб-интерфейс в версии 3 системы Mailman технически является отдельным проектом со своей кодовой базой, развиваемым в основном опытными веб-дизайнерами. Эти выдающиеся разработчики имеют возможность принимать решения, изменять дизайн и запускать реализации веб-интерфейса, не испытывая затруднений из-за хода разработки основного кода системы. В ходе разработки пользовательского веб-интерфейса отправляются запросы добавления необходимых функций в основную часть кода и разрешения доступа к ним с использованием REST API, но разработчикам веб-интерфейса не нужно ждать реализации необходимых функций, так как они могут использовать прототип сервера и продолжать экспериментировать и разрабатывать пользовательский веб-интерфейс в то время, как будет дорабатываться основная часть кода.

Мы планируем использовать REST API для множества других вещей, включая возможность добавления стандартных операций в сценарии и интеграцию с серверами IMAP или NNTP для предоставления альтернативной возможности доступа к архивам.


Далее: Интернационализация


Эта статья еще не оценивалась
Вы сможете оценить статью и оставить комментарий, если войдете или зарегистрируетесь.
Только зарегистрированные пользователи могут оценивать и комментировать статьи.

Комментарии отсутствуют