DBus 介紹

 

DBus 介紹

      dbus是freedesktop下開源的Linux IPC通信機制,本身Linux 的IPC通信機制包括,管道(fifo),共享內存,信號量,消息隊列,Socket等。 像現在流行的moblin平臺就使用了DBUS通信,還有我最近看的bluez 4 也是通過DBUS來交互的。
 
      它是個3層架構的進程間通信系統,包括:   

            1.   函數庫libdbus,用於兩個應用程序呼叫聯繫和交互消息。

            2.   Message bus daemon,總線守護進程可同時與多個應用程序相連,並能把來自一個應用程序的消息路由到0或者多個其他程序。

            3.   一系列基於特定應用程序框架的Wrapper庫。 比如libdbus-glib, libdbus-python.

      參看圖1-1,  Bus Daemon Process就是運行在linux的daemon(dbus-daemon, 用戶可以在/etc/init.d/dbus 操作,stop, start等等),  dbus-daemon運行時會調用libdus的庫。 在Application Process1裏面就是應用層的東西了,應用程序調用特定的應用程序框架的Wrapper庫與dbus-daemon進行通信。

      我前段時間就是用Python寫程序與dbus-daemon通信,所以就需要libdbus-python,後來又用c寫程序,又裝了libdus-glib。實質上在dbus主頁上(http://www.freedesktop.org/wiki/Software/dbus)提供了很多Wrapper庫, for QT4, JAVA, Perl, C++, Pascal, QT3, .NET, Ruby等等。這個Wrapper庫呢其實就是對dbus下層調用做了封裝,給上層暴露一個友好的接口。dbus的底層其實也是通過socket通信的

                                                                         圖 1-1    
      我再給一張bluez的例子讓大家更理解dbus; 有四個應用想與bluz的damon通信,bluez註冊到dbus中,其它的應用只需要向dbus要bluez的數據,
dbus負責再和bluez溝通了,但是bluez一定要把接口告訴其它應用。


      理解有限,先說到這。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章