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

UnixForum





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

Фреймворк Telepathy

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

Оригинал: Telepathy
Автор: Danielle Madeley
Дата публикации:
Перевод: Н.Ромоданов
Дата перевода: июль 2013 г.

Creative Commons. Перевод был сделан в соответствие с лицензией Creative Commons. С русским вариантом лицензии можно ознакомиться здесь.

Telepathy является модульным фреймворком для коммуникаций в режиме реального времени, в котором можно обрабатывать голосовые, текстовые, видео сообщения, осуществлять передачу файлов и так далее. Фреймворк Telepathy уникален не столько тем, что он абстрагирует особенности различных протоколов передачи мгновенных сообщений, а тем, что он воплощает идею коммуникации как сервиса, во многом похожего на то, как печать является сервисом, доступным одновременно для многих приложений. Для достижения этого в Telepathy интенсивно используется шина передачи сообщений D-Bus и модульная архитектура.

Коммуникации, как сервис, невероятно полезны, поскольку позволяют нам с помощью них выйти за рамки отдельного приложения. Нам предлагается много интересных вариантов применения: можно видеть наличие контакта в почтовом приложении, начать с ним общение, использовать этот контакт для передачи ему файла прямо из браузера файлов или, используя контакты, выполнять совместную работу внутри приложений — возможность, известная в Telepathy как Tubes туннели.

Фреймворк Telepathy был создана Робертом Маккуином (Robert McQueen) в 2005 году, и с того времени разрабатывался и поддерживался несколькими компаниями и отдельными разработчиками, в том числе компанией Collabora, одним из сооснователей которой является Маккуин.

Шина передачи сообщений D-Bus

Шина D-Bus является шиной асинхронной передачи сообщений межпроцессного взаимодействия, что представляет собой остов большинства систем GNU/Linux, в том числе среды рабочего стола для GNOME и KDE. D-Bus является, прежде всего, архитектурой с общей шиной: приложения подключаются к шине (идентифицируемой адресом сокета) и могут либо передавать сообщения, адресованные другому приложению, подключенному к шине, либо осуществлять широковещательную передачу сигнала для всех, кто подключен к шине. Приложения, подключенные к шине, имеют шинный адрес, похожий на IP-адрес, и могут объявлять об использовании нескольких зарегистрированных за ними имен, похожих на имена DNS, например org.freedesktop.Telepathy.AccountManager. Все процессы взаимодействуют через демон D-Bus, с помощью которого происходит передача сообщений и регистрация имен.

С точки зрения пользователя, в каждой системе есть две шины. Системная шина представляет собой шиной, позволяющей пользователю взаимодействовать с компонентами, имеющимися в системе (принтерами, устройствами bluetooth, средствами управления аппаратурой и так далее), и которая совместно используется всеми пользователями системы. Сессионная шина является уникальной для каждого пользователя, то есть для каждого пользователя, который вошел в систему, имеется своя собственная сессионная шина, применяющаяся в пользовательских приложениях для связи их друг с другом. Когда через шину нужно передать большой объем трафика, в приложениях также можно создать собственную шину приложения, или можно создать шину типа «точка-точка» (peer-to-peer), управление которой не будет происходить при помощи демона dbus-daemon.

С помощью нескольких библиотек реализован протокол D-Bus, через который можно взаимодействовать с демоном D-Bus, например, помощью библиотек libdbus, GDBus, QtDBus и python-dbus. На эти библиотеки возложена обязанность отправки и получения сообщений D-Bus, преобразование типов из системы типов данных языков программирования в формат типов шины D-Bus, и публикация объектов в среде шины. Обычно в библиотеках также предоставляются удобные интерфейсы API, используемые для получения списков подключенных приложений и приложений, которые могут быть активированы, а также интерфесы для запроса имен, зарегистрированных в шине. На уровне шины D-Bus, всё это сделано с помощью вызовов методов опубликованного объекта, что выполняется демоном dbus-daemon самостоятельно.

Более подробную информацию о шине D-Bus смотрите по ссылке http://www.freedesktop.org/wiki/Software/dbus.


Продолжение статьи: Компоненты фреймворка Telepathy.