Ако сте били на 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-фута, ако не го знаех, програмирах някои неща, особено скриптове за XChat (Clementine, Audacious), използвайки DBus и истината, тъй като знаех, че инструментът щеше да ми спести лудостта от четенето на ръководството MPRIS и различни интерфейси на Clementine и Audacious DBus.
Наистина е много добра статия, благодаря
Вижте моето невежество, толкова много проблеми с dbus във freebsd, gentoo и debian и никога не знаех какво е ... всъщност все още не знам, но вашият пост ми даде груба идея поне.
> D-Bus е вграден компонент неотдавна за настолни дистрибуции в Linux.
Не много отдавна ????? Използвам го от 2005г.
Друго нещо е kdbus, който е скорошен. Това е, опростяване, интегрирането на dbus в ядрото.
Все още е кратко време повече от нищо, защото D-Bus изисква останалите компоненти на системата да започнат да го използват, за да бъдат напълно функционални.