Въведение в D-Bus

шина-йерархия-концептуална

Ако сте били на Linux от известно време, може би сте се чудили какво е D-Bus. D-Bus е компонент, включен неотдавна към настолни Linux дистрибуции, който се очаква да играе много важна роля за програмирането на Linux.

Какво е D-Bus?

D-Bus е комуникационна система между приложения с много разнообразен произход. С тази система можем дори да извикаме собствени приложения (ако те използват D-Bus). Той не играе същата роля като библиотеката, защото библиотеката не е независима програма и библиотеката е част от вашия изпълним файл. Идеята за D-Bus е вдъхновена от Windows OLE, COM и ActiveX обектите. Windows COM обектите предлагат лесен начин за извикване на всяка програма от друга програма, дори да могат визуално да вграждат една в друга, без да използват същия език за програмиране. D-Bus не стига толкова далеч, но предлага комуникацията, която липсва на UNIX.

Защо D-Bus е важен?

D-Bus е важен предвид голямото разнообразие от езици, които могат да работят на Linux, както и голямото разнообразие от библиотеки. Да вземем практически пример. Искам да изпратя известие до системата Ubuntu notify-osd от моето приложение в Node.js. Първо ще трябва да видите коя библиотека предлага тази функционалност в системата, libnotify в този случай, а след това трябва да направите някои обвързвания, за да можете да извикате библиотеката, програмирана в C от JavaScript. Също така си представете, че искаме да стартираме нашето приложение с десктоп, който не използва libnotify за известия.

Използване на D-Bus

Затова решихме, че ще използваме D-Bus, за да създадем известието за нашето приложение в JavaScript.

https://gist.github.com/AdrianArroyoCalle/99d2ea6db92e90a54e2c

В D-Bus има 2 типа шини, уникален D-Bus към системата и D-Bus за всяка потребителска сесия. Тогава в D-Bus имаме услуги, които са "имената на доставчици на D-Bus", нещо като приложения на D-Bus. Тогава в подобна на папка структура са обектите, които тази услуга или екземпляри могат да имат и накрая интерфейсът е начинът за взаимодействие с обектите на тази услуга. В този случай той е много излишен, тъй като сървърът за уведомяване е много прост.

Кой използва D-Bus?

Повече програми, отколкото можете да си представите, използват D-Bus. Някои услуги на D-Bus, само за да посочим примери, са:

  • com.Skype.API
  • com.canonical.Unity
  • org.freedesktop.PolicyKit1
  • org.gnome.Nautilus
  • org.debian.apt
  • com.ubuntu.upstart

За да разберете всички D-Bus услуги, които сте инсталирали, можете да използвате d-foot

D-крака


Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

  1. Отговорен за данните: Мигел Анхел Гатон
  2. Предназначение на данните: Контрол на СПАМ, управление на коментари.
  3. Легитимация: Вашето съгласие
  4. Съобщаване на данните: Данните няма да бъдат съобщени на трети страни, освен по законово задължение.
  5. Съхранение на данни: База данни, хоствана от Occentus Networks (ЕС)
  6. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.

  1.   neysonv каза той

    интересно. Толкова дълго го гледах и дори не знаех какво е

  2.   Юкитеру каза той

    Нещата с d-фута, ако не го знаех, програмирах някои неща, особено скриптове за XChat (Clementine, Audacious), използвайки DBus и истината, тъй като знаех, че инструментът щеше да ми спести лудостта от четенето на ръководството MPRIS и различни интерфейси на Clementine и Audacious DBus.

  3.   Gabriel каза той

    Наистина е много добра статия, благодаря

  4.   грешник каза той

    Вижте моето невежество, толкова много проблеми с dbus във freebsd, gentoo и debian и никога не знаех какво е ... всъщност все още не знам, но вашият пост ми даде груба идея поне.

  5.   Забележка каза той

    > D-Bus е вграден компонент неотдавна за настолни дистрибуции в Linux.

    Не много отдавна ????? Използвам го от 2005г.

    Друго нещо е kdbus, който е скорошен. Това е, опростяване, интегрирането на dbus в ядрото.

    1.    AdrianArroyoStreet каза той

      Все още е кратко време повече от нищо, защото D-Bus изисква останалите компоненти на системата да започнат да го използват, за да бъдат напълно функционални.