Das Kefk Network Wiki befindet sich im Testbetrieb.


D-Bus

Aus Kefk.

Wechseln zu: Navigation, Suche
D-Bus
Entwickler: D-Bus-Team
Aktuelle Version: 1.0.2
(12. Dezember 2006)
Betriebssystem: Unix, Linux
Kategorie: Programmbibliothek
Lizenz: GPL oder Academic Free License
Deutschsprachig: ja
Website: http://www.freedesktop.org/wiki/Software/dbus

D-Bus ist ein Software-System, das verschiedenen Programmen eine einfache Möglichkeit bietet, miteinander zu kommunizieren. Es wird als Teil des freedesktop.org-Projektes entwickelt.

Inhaltsverzeichnis

Architektur

D-Bus ist ein IPC-System mit drei Schichten:

  • Eine Bibliothek, libdbus, die zwei Anwendungen erlaubt, sich gegenseitig zu kontaktieren und Nachrichten auszutauschen.
  • Ein ausführbarer Nachrichtenbusdämon, basierend auf libdbus, mit dem sich mehrere Anwendungen verbinden können. Der Dämon kann Nachrichten von einer Anwendung an eine oder mehrere Anwendungen weiterleiten.
  • Wrapper-Bibliotheken, die auf bestimmten Anwendungsstrukturen basieren.

D-Bus ist ausgelegt für zwei spezifische Fälle:

  • Kommunikation zwischen Desktopanwendungen der selben Sitzung
  • Kommunikation zwischen der Desktopsitzung und Teilen des Betriebssystems wie dem Kernel, den verschiedenen Systemdämonen oder Systemprozessen

Wie D-Bus funktioniert

Jede Anwendung, die D-Bus nutzt, besitzt Objekte, die allgemein (aber nicht unbedingt) von GObject, QObject, C++- oder Python-Objekten abgeleitet sind. Ein Objekt ist dabei eher eine Instanz als ein Typ. Wenn Nachrichten über eine D-Bus-Verbindung empfangen werden, werden sie an ein spezifisches Objekt gesendet, nicht an die gesamte Anwendung.

Um Nachrichten zu erlauben, ihr Zielobjekt zu spezifizieren, muss es möglich sein, sich auf ein Objekt zu beziehen. In vielen Programmiersprachen wird dies üblicherweise als Zeiger oder Referenz bezeichnet. Jedoch werden diese Referenzen relativ zur Laufzeit-Speicheradresse in der Anwendung implementiert und können daher nicht von einer Anwendung an eine andere gesendet werden.

Um dieses Problem zu lösen, führt D-Bus einen Namen für jedes Objekt ein. Der Name ähnelt einem Dateisystempfad, zum Beispiel könnte ein Objekt /org/kde/kspread/sheets/3/cells/4/5 heißen. Leicht verständliche Pfade sollten bevorzugt werden, allerdings kann der Entwickler auch Objekte entwerfen, die /com/mycompany/c5yo817y0c1y1c5b heißen, wenn es sinnvoll für die Anwendung ist.

Um sicherzustellen, dass verschiedene Codemodule auseinandergehalten werden können, sind die D-Bus-Objekte in einem Namensraum zusammengefasst. Namensräume enthalten meist das Präfix der Domänennamenkomponenten der Entwickler (zum Beispiel /org/kde).

Siehe auch

DCOP

Weblinks

Wikipedia
Dieses Dokument entstammt in seiner ersten oder einer späteren Version der deutschsprachigen Wikipedia. Es ist dort zu finden unter dem Stichwort D-Bus, die Liste der bisherigen Autoren befindet sich in der Versionsliste; die Originalfassung kann dort auch bearbeitet werden. Alle Texte der Wikipedia und ihre Derivate stehen unter der GNU-Lizenz für freie Dokumentation.
Persönliche Werkzeuge