
儘管閱讀了大量的 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 的大部分內容僅對綁定實作有用。