D-Bus

D-Bus
D-Bus
Тип

IPC

Разработчик

FreeDesktop.org

Написана на

C

Операционная система

Кроссплатформенный

Последняя версия

1.6.0[1] (5 июня 2012 г.)

Лицензия

GPL или AFL 2.1

Сайт

www.freedesktop.org

D-Bus — система межпроцессного взаимодействия, которая позволяет приложениям в операционной системе общаться друг с другом.

D-Bus является частью проекта freedesktop.org. Она обладает высокой скоростью работы, не зависит от рабочей среды, работает на POSIX-совместимых операционных системах, также существует версия для Windows (пока на стадии разработки). Состоит из двух частей: демона и низкоуровневого API. Существуют высокоуровневые библиотеки для фреймворков Qt, Java, GLib, C#, Python и библиотека для C++.

Содержание

История

Приложения одной среды рабочего стола должны тесно взаимодействовать между собой. В графической среде KDE для этого не так давно использовался DCOP, но другие настольные среды (например, GNOME) не имели аналогичных систем.

Существовала возможность коммуникации посредством CORBA, SOAP или XML-RPC, но CORBA использует большое количество ресурсов (KDE и GNOME прошли этап его использования за время своего существования), а SOAP и XML-RPC предназначены для веб-сервисов.

Раньше GNOME использовал Bonobo, основанный на CORBA, но из-за зависимости от GObject, Bonobo не использовался в других рабочих средах, а низкое быстродействие CORBA сказывалось на скорости всей среды.

Требовалось организовать обмен сообщениями между приложениями двух разных сред. Для решения этой задачи и был создан проект D-Bus. Реализация оказалась удачной и впоследствии было решено проект KDE 4 перевести на использование D-Bus.

Принципы работы

D-Bus предоставляет системе несколько шин:

  1. Системная шина. Создаётся при старте демона D-BUS. С её помощью происходит общение различных демонов, она практически недоступна для пользовательских приложений
  2. Сессионная шина. Создаётся для пользователя, авторизировавшегося в системе. Для каждой такой шины запускается отдельная копия демона, посредством неё будут общаться приложения, с которыми работает пользователь.

Каждое сообщение D-BUS, передаваемое по шине, имеет своего отправителя и своего получателя, их адреса называются путями объектов, поскольку D-BUS предполагает, что каждое приложение состоит из набора объектов, а сообщения пересылаются не между приложениями, а между объектами этих самых приложений.

Каждый объект может поддерживать один или более интерфейсов, которые представлены здесь в виде именованных групп методов и сигналов — аналогично интерфейсам Glib, Qt или Java.

D-BUS также предусматривает концепцию сервисов. Сервис — уникальное местоположение приложения на шине. При запуске приложение регистрирует один или несколько сервисов, которыми оно будет владеть до тех пор, пока самостоятельно не освободит, до этого момента никакое другое приложение, претендующее на тот же сервис, занять его не сможет. Именуются сервисы аналогично интерфейсам.

Сервисы делают доступной ещё одну функцию — запуск необходимых приложений в случае поступления сообщений для них. Для этого должна быть включена автоактивация, а в конфигурации D-BUS за этим сервисом должно быть закреплено одно приложение. Тогда D-BUS сможет его запустить при появлении сообщения.

После закрытия приложения ассоциированные сервисы также разрегистрируются, а D-BUS посылает сигнал о том, что сервис закрыт. Другие приложения могут получать такие сигналы и соответствующим образом реагировать.

После подключения к шине приложение должно указать, какие сообщения оно желает получать, путём добавления масок совпадений (matchers). Маски представляют собой наборы правил для сообщений, которые будут доставляться приложению, фильтрация может основываться на интерфейсах, путях объектов и методах. Таким образом, приложения будут получать только то, что им необходимо, проблемы доставки в этом случае берет на себя D-BUS.

Сообщения в D-BUS бывают четырёх видов: вызовы методов, результаты вызовов методов, сигналы и ошибки. Первые предназначены для выполнения методов над объектами, подключенными к D-BUS; посылая такое сообщение, вы выдаете задание объекту, а он после обработки обязан возвратить вам либо результат вызова, либо ошибку через сообщения соответствующих типов. Сигнальные же сообщения, как им и полагается, ничуть не заботятся о том, что и как делается объектами, они вольны воспринимать их как угодно (равно как и не получать их вовсе).

Чтобы сообщение достигло определённого объекта, необходим способ сослаться на объект. Во многих языках программирования это реализуется с помощью указателя. Однако, эти указатели реализуются как адреса памяти, относящиеся к локальному адресному пространству приложения, и не могут быть переданы от одного приложения другому.

Поэтому в D-Bus у каждого объекта своё, уникальное имя, которое выглядит как путь в файловой системе. Например, объект может быть именован как /org/kde/kspread/sheets/3/cells/4/5. Предпочтительны имена, которые несут какую-либо смысловую нагрузку, тем не менее, разработчики могут выбрать и имя /com/mycompany/c5yo817y0c1y1c5b, если это имеет смысл для их приложения.

Имена объектов находятся в пространствах имён, чтобы обеспечить разграничение разных программных модулей. Пространствам имён обычно даётся префикс, специфичный для разработчика, например /org/kde.

См. также

Примечания

  1. Announcing dbus 1.6.0. freedesktop.org (5 июня 2012). Архивировано из первоисточника 26 июня 2012.

Источник

Ссылки


Wikimedia Foundation. 2010.

Игры ⚽ Поможем написать реферат

Полезное


Смотреть что такое "D-Bus" в других словарях:

  • Bus transport in the United Kingdom — Buses play a major role in the public transport of the United Kingdom, as well as seeing extensive private use.History The horse bus era The first omnibus service in the United Kingdom was started by John Greenwood between Pendleton and… …   Wikipedia

  • Bus routes in Sydney — Bus routes in Sydney, Australia are numbered with three digits, the first digit referring to the region in which the bus route primarily operates.Northern BeachesBus services between the Northern Beaches region of Sydney and the central business… …   Wikipedia

  • Bus Parisien — Situation Paris et petite couronne Type Autobus …   Wikipédia en Français

  • Bus RATP — Bus parisien Bus parisien Situation Paris et petite couronne Type Autobus …   Wikipédia en Français

  • Bus parisien — Situation Paris et petite couronne Type Autobus …   Wikipédia en Français

  • Bus parisiens — Bus parisien Bus parisien Situation Paris et petite couronne Type Autobus …   Wikipédia en Français

  • Bus rapid transit — ( BRT ) is a broad term given to a variety of transportation systems that, through improvements to infrastructure, vehicles and scheduling, attempt to use buses to provide a service that is of a higher quality than an ordinary bus line. Each BRT… …   Wikipedia

  • Bus manufacturing — describes the manufacturing of buses and coaches.HistoryBus manufacturing had its earliest origins in carriage building. Other bus manufacturers had their origins in truck manufacturing. Historically, bus chassis were shared between truck designs …   Wikipedia

  • Bus (informatique) — Bus informatique Pour les articles homonymes, voir Bus. bus VME Un bus informatique désigne l ensemble des lignes de communication connectant différents composan …   Wikipédia en Français

  • Bus Blancs — de la Croix Rouge suédoise, probablement à proximité du domaine de leur quartier général à Friedrichsruh Le terme Bus blancs a été utilisé pour une opération humanitaire dont le fer de lance fut le comte suédois Folke Bernadotte sous les ausp …   Wikipédia en Français

  • Bus Informatique — Pour les articles homonymes, voir Bus. bus VME Un bus informatique désigne l ensemble des lignes de communication connectant différents composan …   Wikipédia en Français


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»