Connect desktop apps using D-BUS DBUS基本上是一個IPC的實作。然而，因其特色使DBUS不止是另一個IPC的實作。為了解決特定的IPC問題，已有數種實作。CORBA解決OOP複雜的IPC，DCOP是較輕薄的IPC framework，power沒那麼強大，但已整合至KDE。SOAP和XML-RPC則是用在web service，因此使用HTTP為其傳輸協定。而DBUS是為了桌面應用程式與OS之間的通訊。
一般桌面都有數個應用程式在執行，且其間常常需要傳遞訊息。DCOP是KDE的solution，但跟KDE綁在一起，無法與其他桌面環境共用。Bonobo則是Gnome的solution。因其基於CORBA，因此相當的笨重。同時也跟kobject綁在一起，因此也無法與其他桌面環境共用。DBUS則是想要同時取代DCOP與Bonobo並與KDE和Gnome整合。DBUS的dependence也盡量保特最小，因此應用程式在使用DBUS時不需擔心一大堆dependence的問題。
本篇所指的operation system不只是kernel，還包括daemon。例如udev，當device插入時，會產生signal (至DBUS)。這考慮到了桌面環境與硬體的緊密結合，使得user有更好的user experience。
DBUS有幾個有趣的特點，讓它看來更吸引人。
1.protocol是low-latency且low-overhead，在設計時，便著重小而有效率以使訊息來回時間最小化。
2.protocol是binary的，而非文字的，因此不需序列化的流程 (譯註1)。使用上是在本機上處理，因此若DBUS message在網路上傳遞至遠端主機，仍然可被正確地分析。
對開發者來說DBUS是易用的。其連接協定是簡單易懂的，且client library用直覺的方式打包 (wrap)它。library也為其他系統打包:預期Gnome會有GObject的wrapper，而KDE則會有Qt的wrapper。Python的wrapper則已經有了。
最後，DBUS是freedesktop.org的一部份，因此有KDE，Gnome和其他參與者進行設計及實作。
DBUS的設定是由數條bus組成。永久存在的system bus是在開機時便啟動。此bus是OS和daemon所使用，且非常安全，因此不是隨便的應用程式就可以唬嚨系統，亂發event。還有數條session bus，當user登入後啟動，對該user來說是私有的。該user的應用程式也是用session bus通訊。應用程式需要接收訊息可連上system bus，但要送訊息到system bus則是有限制的。
當應用程式連上bus，需用matcher聲明要接受哪種訊息。matcher利用interface，object path和method (如下述)來指定要訊息接收的規則。這使用應用程式得以專注於其該處理的事，達到有效的訊息轉發, 且讓參與該訊息的相關人等免於應用程式的效能像在地上爬。
本質上，DBUS是peer to peer的協定。每個訊息都有來源和目的地。這些位址就是object path。概念上，使用 dbus的應用程式都有一組object，且訊息是在這些object間傳遞，而非在應用程式(譯註2)。
returns，signals和errors。執行一個DBUS object的method的方法為送一個method call給該object。該method處理完後，便回傳message return或error。signal是不同的，因為它不能回傳任何東西。並沒有signal return message，也沒有任何其他類型的error訊息。
Serice是DBUS中最高層的抽像化，且使實作正在增加中。應用程式可在bus上註冊service。成功後，該應用程式即取得該service。其他應用程式可檢查特定service是否存在且要求bus啟動該service。
如前述，udev可將DBUS build進去，因此當裝置插入後，udev便可發signal。其他的應用程式可監聽這些event並做相對的處理。例如，gnome-volume-manager可偵測usb插入並自動mount起來，或當相機插入後，自動下載照片。
譯註1:這應該是指binary的執行效率較佳，在處理訊息時的overhead低。
譯注2: 應用程式可任意註冊多個obect。
譯注3:interface的目的是讓同樣的method name被不只一次被使用，只要指定到底哪些method是有參與的。如:org.freedesktop.DBus 是一個interface。
譯註4: 可將object想成程式裡的object，只是其指向object path而非memory address。object path就像linux的檔案路徑，如/org/freedesktop/DBus是一個object。
譯註5. 指參數都要的型別(type)，避免未知的錯誤。
只想了解DBUS，沒有要實作，到這邊就夠了。