Was ist der Sinn von DBus-Objekten?

Was ist der Sinn von DBus-Objekten?

Obwohl ich unzählige DBus-Tutorials gelesen habe, fällt es mir immer noch schwer, das gesamte Konzept zu verstehen. Meiner Meinung nach war dies eine der besten Erklärungen bisher:

http://telepathy.freedesktop.org/doc/book/sect.basics.dbus.html

Der Grund für die Verwendung des DBus liegt darin, dass ich Daten zwischen verschiedenen Programmen austauschen möchte. Meiner Meinung nach würde es ausreichen, einen Server oder, wie in Abbildung 2-2 genannt, einen Dienst bereitzustellen. Dieser Dienst stellt verschiedene Methoden über eine Schnittstelle bereit, die ich mit dem Client teile.

Der Client ruft dann eine Methode auf und erhält eine Antwort.

Was übersehe ich also? Warum werden zusätzliche Objekte benötigt?

Ich denke, es geht nur darum, sich an die Java-Konventionen für Objekte bzw. Klassen zu halten. Jedes Objekt stellt eine Instanz dar. Ich würde mich freuen, wenn das jemand bestätigen könnte.

Welchen Vorteil hat das erste System gegenüber dem zweiten?

Diagramm

Antwort1

Nicht aufgrund einer Konvention, sondern um Bindungen auf hoher Ebene zu ermöglichen.

Native Objekte und Objektpfade

Ihr Programmierframework definiert wahrscheinlich, wie ein „Objekt“ aussieht; normalerweise mit einer Basisklasse. Zum Beispiel: java.lang.Object, GObject, QObject, Pythons Basisobjekt oder was auch immer. Nennen wir dies ein natives Objekt.

Das Low-Level-D-Bus-Protokoll ... kümmert sich nicht um native Objekte. Es bietet jedoch ein Konzept namens Objektpfad. Die Idee eines Objektpfads besteht darin, dass Bindungen auf höherer Ebene native Objektinstanzen benennen und Remoteanwendungen ermöglichen können, auf sie zu verweisen.

Bearbeiten:

Wahrscheinlich können Sie einfach die API und den in libdbus integrierten Message Bus Daemon verwenden, um die Verwendung von Objekten zu vermeiden, sodass Sie mit Ihrem Kommunikationsansatz von enden werdenein Client, der eine Methode aufruft und eine Antwort erhält. Beachten Sie jedoch, dass libdbus als Low-Level-Backend für die Higher-Level-Bindungen gedacht ist, sodass ein Großteil der libdbus-API nur für die Bindungsimplementierung nützlich ist.

verwandte Informationen