Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Фреймворк Telepathy

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

Оригинал: Telepathy
Автор: Danielle Madeley
Перевод: Н.Ромоданов

20.1. Компоненты фреймворка Telepathy

Telepathy является модульным фреймворком, в котором каждый модуль взаимодействует с другими через шину сообщений D-Bus. Причем, чаще всего через сессионную шину пользователя. Это взаимодействие подробно описано в спецификациях фреймворка Telepathy [2]. На рис.20.1 показаны следующие компоненты Telepathy:

  • Менеджер соединений (Connection Manager) предоставляет интерфейс между Telepathy и отдельными коммуникационными сервисами. Например, есть менеджер соединений для XMPP, для SIP, для IRC, и т.д. Добавление поддержки нового протокола в Telepathy представляет собой написание нового менеджер соединений.
  • Сервис менеджера аккаунтов (Account Manager) отвечает за хранение коммуникационных аккаунтов пользователей и за установку, когда будет получен запрос, подключения к каждому аккаунту через соответствующий менеджер соединений.
  • Роль диспетчера каналов (Channel Dispatcher) состоит в прослушивании во входящих каналах сигналов, передаваемых каждым менеджером соединений, и перенаправлении их к клиентам, которые указали, что они могут обрабатывать данный тип канала, например текстовые сообщения, голосовые и видео сообщения, выполнять передачу файлов, использовать туннели.
  • Клиентские программы или клиенты фреймворка Telepathy обрабатывают или наблюдают за коммуникационными каналами. К их числу относятся как пользовательские интерфейсы, например, клиенты IM и VoIP, так и сервисы, например, такой, который регистрирует сообщения чата. Клиентские программы самостоятельно регистрируются в диспетчера каналов, указывая список типов каналов, которые они хотели бы обрабатывать или за которыми они хотели наблюдать.

В текущей реализации фреймворка Telepathy, менеджер аккаунтов и диспетчер каналов представлены в виде единого процесса, который называется центром управления (Mission Control).

Рис.20.1: Пример компонентов фреймворка Telepathy

Такая модульная архитектура основывается на философии Дага Макилроя (Doug McIlroy): «Пишите программы, которые делают что-то одно, и делают это хорошо», и имеет несколько важных преимуществ:

  • Устойчивость к ошибкам (Robustness): Ошибка в одном из компонентов не должна приводить к краху всего сервиса.
  • Легкость разработки (Ease of development): Компоненты в работающей системе могут заменяться, что не должно влиять на другие компоненты. Должна быть возможность проверять версию разрабатываемого модуля и сравнивать ее с версиями других модулей, которые работают надлежащим образом.
  • Независимость от языка программирования (Language independence): Компоненты могут быть написаны на любом языке программирования, для которого есть привязка (binding) к шине D-Bus. Если данный протокол лучше всего реализован на каком-то конкретном языке, вы можете написать на этом языке свой собственный менеджер соединений и он будет доступен для всех клиентов фреймворка Telepathy. Точно также, если вы решили разработать свой собственный пользовательский интерфейс на каком-то конкретном языке, то у вас имеется доступ ко всем имеющимся протоколам.
  • Лицензионная независимость (License independence): Компоненты могут использовать различные лицензии, которые были бы несовместимыми, если бы всё работало в одном процессе.
  • Независимость от интерфейсов (Interface independence): Поверх одних и тех же компонентов Telepathy можно разрабатывать большое количество пользовательских интерфейсов. Это позволяет пользоваться нативными интерфейсами в среде рабочего стола и в аппаратно реализуемых устройствах (например, GNOME, KDE, Meego, Sugar).
  • Безопасность (Security): Компоненты работают в различных адресных пространствах с весьма ограниченными правами. Например, типичному менеджеру соединений нужен всего лишь доступ к сети и к сессионной шине D-Bus, что позволяет использовать нечто, похожее на SELinux, для ограничения доступа к компонентам.

Менеджер соединений управляет некоторым количеством соединений, каждое соединение представляет собой логическое подключение к некоторому коммуникационному сервису. В каждом аккаунте есть одно соединение. В соединении может быть много каналов. Каналы являются механизмом, через который происходит коммуникация. С помощью каналов реализовывают обмен мгновенными сообщениями IM, голосовые или видео вызовы, пересылку файлов, или какой-либо другие операции, требующие сохранение состояния (stateful operation). Соединения и каналы более подробно рассматриваются в разделе 20.3.


Продолжение статьи: Как в Telepathy используется шина D-Bus.