尽管阅读了大量的 DBus 教程,我仍然很难理解整个概念。在我看来,这是迄今为止最好的解释之一:
http://telepathy.freedesktop.org/doc/book/sect.basics.dbus.html
之所以使用DBus是因为我想在不同的程序之间交换数据。在我看来,提供一个服务器或者如图 2-2 所示的服务就足够了。该服务通过我与客户端共享的接口提供了多种方法。
然后客户端调用一个方法并获得答案。
那么我错过了什么?为什么需要额外的对象?
我想这只是为了遵守对象和类的 Java 约定。每个对象代表一个实例。真的很想有人证实这一点。
第一个系统相对于第二个系统有什么好处?
答案1
不是按照惯例,而是为了促进高级绑定。
您的编程框架可能定义了“对象”是什么样的;通常有一个基类。例如:java.lang.Object、GObject、QObject、python 的基本对象或其他任何东西。我们将其称为本机对象。
低级 D-Bus 协议……不关心本机对象。然而,它提供了一个称为对象路径的概念。对象路径的想法是,更高级别的绑定可以命名本机对象实例,并允许远程应用程序引用它们。
编辑:
也许您可以只使用 API 和 libdbus 中内置的消息总线守护进程,以避免使用对象,因此您将以以下通信方法结束调用方法并获得答案的客户端。但请注意,libdbus 旨在成为较高级别绑定的低级别后端,因此 libdbus API 的大部分内容仅对绑定实现有用。