more: Jollen 的 Embedded Linux 教育訓練

« 無痛入門:OpenMoko Toolchain | Home | 開放原碼架構設計:Glib 小談 (1) »

開放原碼架構設計:D-BUS 觀念小談

jollen 發表於 May 24, 2007 11:04 AM

近期以來,因為工作上的需求,花費許多時間在開放原碼的架構設計上;最近已經將相關的作業都準備的差不多了,我想,可以跟大家分享一些架構設計的小觀念。

首先,先由 [D-BUS] 介紹起。使用 D-Bus 來取代傳統的 IPC,並與外部工具(eg. mjpegtools)做整合。

D-BUS 本身屬於 low-level 的 library(libdbus),實務上,我採用了 glib binding 來實作程式,以簡化工作:

http://dbus.freedesktop.org/doc/dbus-glib/index.html

D-BUS 是一種 'message bus',未來將取代傳統 IPC 的使用。傳統 IPC 實作,必須將程式架構成 monolithic process,因此在 process 的行為控制,以及 application 間的整合上,都很一定的難度,非常不易於實作「系統」。

引進 D-BUS 技術後,傳統的 monolithic process 被區分為「pieces of D-BUS services」,每個服務,都可以透過「D-BUS patch」來尋找並叫用(invoke);透過 D-BUS 所建立的框架(framework)或是架構,解決了以往難以整合各種應用程式的困境。此外,D-BUS 目前也透過 kobject 與 kernel 做整合,如此一來,D-BUS 便能輕易整合 kernel、application 與 desktop,真正解決以往「系統整合」所遇到的障礙。

例如,如何實作「按鍵觸發應用程式」的系統?

傳統的做法,會讓程式設計師進入「不斷使用 low-level C API 來 try-and-error」的可怕輪迴,但是使用 D-BUS 的架構後,我們只要修改 device driver,將按鍵的動作透過 kobject event layer 傳送(經由 netlink socket)給 D-BUS 即可,D-BUS 會根據我們所定義的路徑,來叫用 application。

D-BUS 所提供的 message bus 分為二種:

* system bus
* local bus

System bus 最大的用途便是整合 kernel 與 application;local bus 為 session bus,即訊息的傳遞只限於該 session。

來源: www.jollen.org

--jollen

引用通告

如果您想引用這篇文章到您的Blog,
請複製下面的鏈接,並放置到您發表文章的相應界面中。

http://blog.jollen.org/mt-tb.cgi/404

發表一個評論

(您發表的意見將被立即接受,但需要一點時間與後端伺服器做同步,您的留言才會顯示在網站上。為避免 spam 攻撃,按「發表」後請輸入帳號密碼。使用者帳號:「nospam」、密碼:「nospam」。)

Top | 授權條款 | Jollen's Forum: Blog 評論、討論與搜尋
Copyright(c) 2006 www.jollen.org