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

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

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

Lines Club

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

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

Фреймворк 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.


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

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