WikiSort.ru - Не сортированное

ПОИСК ПО САЙТУ | о проекте

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

D-Bus является частью проекта freedesktop.org. Она обладает высокой скоростью работы, не зависит от рабочей среды, работает на POSIX-совместимых операционных системах, также существует версия для Windows (пока на стадии разработки)[1].

D-Bus
Тип IPC
Разработчик FreeDesktop.org
Написана на C
Операционная система Кроссплатформенный
Последняя версия 1.12.2 (13 ноября 2017[2])
Лицензия GNU GPL v2, или
AFL 2.1
Сайт freedesktop.org/wiki/Sof…

Состоит из двух частей: демона и низкоуровневого API. Существуют высокоуровневые библиотеки для фреймворков Qt, Java, GLib, C#, Python, Ruby и библиотека для C++.

История

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

См. также

Примечания

  1. dbus. www.freedesktop.org. Проверено 3 августа 2017.
  2. dbus/dbus - a lightweight ipc mechanism

Литература

Ссылки

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии