D-BUS – System Komunikacji Międzyprocesowej
D-BUS to efektywny system komunikacji międzyprocesowej, zaprojektowany z myślą o aplikacjach użytkowych. Został zainspirowany systemem DCOP, a jego integracja z KDE 4 zyskała popularność. D-BUS jest wspierany przez większość systemów operacyjnych POSIX oraz posiada port dla Windowsa. Znajduje zastosowanie w środowiskach takich jak Qt 4 i GNOME, gdzie zastępuje starszy mechanizm Bonobo.
Projekt D-BUS
D-BUS umożliwia programom rejestrację usług oraz sprawdzanie ich dostępności przez programy klienckie. Możliwe jest również zarejestrowanie programu do oczekiwania na zdarzenia z jądra systemu, co jest przydatne w przypadku sprzętu obsługującego hot swapping.
D-BUS działa jako demon (najczęściej dbus-daemon), umożliwiając użytkownikom uruchamianie wielu instancji, zwanych kanałami. Systemy zazwyczaj implementują uprzywilejowany kanał systemowy oraz prywatne instancje dla każdego zalogowanego użytkownika, co pozwala na nieograniczoną komunikację między aplikacjami.
Architektura D-BUS
Architektura D-BUS składa się z kilku kluczowych komponentów:
- libdbus: Podstawowa biblioteka umożliwiająca komunikację między aplikacjami.
- System wymiany informacji: Umożliwia przesyłanie wiadomości pomiędzy aplikacjami.
- Biblioteki owijające: Takie jak libdbus-glib oraz libdbus-qt, które ułatwiają pisanie aplikacji korzystających z D-BUS.
Każda aplikacja korzystająca z D-BUS zawiera obiekty mapowane na GObject, QObject, C++, lub Pythona. Wiadomości są kierowane do konkretnych obiektów, co przypomina interakcję z komponentami oprogramowania.
Mechanizmy D-BUS
Obiekty w D-BUS są identyfikowane przez unikalne nazwy, które przypominają ścieżki systemowe, np. /org/kde/kspread/sheets/3/cells/4/5. System ten rozwiązuje problem przekazywania referencji między aplikacjami, umożliwiając ich identyfikację w przestrzeni nazw.
D-BUS obsługuje dwa typy demonów:
- Systemowy demon: Służy do globalnych wiadomości, z jedną instancją działającą w danym czasie.
- Demon sesyjny: Umożliwia komunikację między aplikacjami w ramach tej samej sesji użytkownika, z nową instancją dla każdej sesji.
Zastosowanie D-BUS
D-BUS jest szeroko wykorzystywany w środowiskach KDE i GNOME do zarządzania zdarzeniami związanymi z podłączaniem i odłączaniem urządzeń. Coraz więcej aplikacji, takich jak Gajim czy Pidgin, obsługuje D-BUS, co zwiększa jego znaczenie w ekosystemie oprogramowania.