přihlásit 6927/805829

D-BUS – úvod

D-BUS je nový moderní systém pro IPC (komunikaci mezi procesy) v desktopovém prostředí. Stojí za ním freedesktop.org a i když je zatím ve vývoji a nemá dosud stabilní API, proniká hluboko do systému Linuxu. Využívá jej například HAL (hardware abstraction layer – abstraktni vrstva hardwaru), GNOME a jeho podporu (přechod na něj) vyhlásilo i KDE, což umožní i komunikaci mezi KDE a GNOME aplikacemi. Ve Windows jeho podpora pravděpodobně není.

D-BUS slouží k zasílání zpráv mezi programy. Jeho architektura má několik vrstev. Nejníže leží knihovna libdbus, která umožňuje spojení a komunikaci mezi dvěma programy, podobně jako socket. Místo bytového proudu se komunikace odehrává pomocí standardizovaného protokolu a zpráv, které umožňují přenos objektů i vzdálené volání metod, autentizaci a podobně.

Druhá vrstva vystavěná nad libdbus je dbusd. To je daemon (server, služba), která trvale běží v systému a umožňuje komunikaci více programů současně. V praxi tak programy spolu obvykle nekomunikují přímo, ale skrz dbusd, který předává zprávy. Ale je možná i přímá komunikace. Jednomu programu tak může naslouchat skrze dbusd libovolný počet programů, včetně žádného a také jeden program může naslouchat několika jiným programům.

Samotné programy taky obvykle nepoužívají libdbus přímo, ale až knihovny, které libdbus obalují a práci s ní zjednodušují. Takových obalů je řada, například libdbus-glib (glib je nízkoúrovňová knihovna GTK a GNOME), libdbus-qt a pochopitelně také objektový binding do Pythonu, který nás zajímá nejvíc.

Podrobnosti pro zvědavé zájemce

Dbusd má typicky několik instancí. První instance je globální jedináček (singletoon) v rámci stroje, je to systémový daemon (služba). Tato instance má velká bezpečnostní omezení ohledně zpráv, které přijímá a slouží ke komunikaci napříč celým systémem. Další instance jsou vytvářeny jedna na každé přihlášení uživatele (one per user login session). Tyto instance umožňují volnější komunikaci mezi aplikacemi v rámci jednoho uživatele.

Systémový a uživatelský daemon jsou odděleny a jsou na sobě nezávislé. Ani jeden nevyžaduje k funkci toho druhého. Programátor sám určuje, skrz který daemon chce komunikovat.

Na světě je mnoho podobných systémů IPC, například CORBA, DCE, DCOM, DCOP, XML-RPC, SOAP, MBUS, ICE a další. Každý z nich je šitý na míru specifickým požadavkům. D-BUS je dělaný na dva specifické případy:

Pro komunikaci v rámci desktopového sezení používalo GNOME systém CORBA a KDE používalo systém DCOP. D-BUS je navržen na základě zkušeností s nimi a je dělaný zejména pro jejich potřeby. D-BUS může a nemusí být vhodný pro potřeby jiných aplikací. Například komunikaci mezi počítači.

D-BUS je navržen tak, aby měl nízkou latenci (umožňuje asynchronní komunikaci podobně jako X protokol), aby měl nízké režijní náklady (užívá binární protokol) a aby se snadno používal (používá zprávy, míto bytového toku a obaluje objektový systém každého frameworku, takže se programátor nemusí učit nový pro potřeby IPC).

web projektu [1] specifikace [2] tutorial [3]


Seznam URL na stránce:
[1] http://www.freedesktop.org/wiki/Software/dbus
[2] http://dbus.freedesktop.org/doc/dbus-specification.html
[3] http://dbus.freedesktop.org/doc/dbus-tutorial.html

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /web/htdocs2/wraithcz/home/www/python/data/sessions/sessions1.php on line 2