百科解釋
目錄·介紹·架構·D-BUS運作方式 D-BUS是一個提供簡單的應用程序互相通訊的途徑的自由軟件工程,它是做為freedesktop.org項目的一部分來開發(fā)的。 D-Bus 深深地受到了DCOP系統(tǒng)的影響而且將在KDE 4版的release中取代DCOP;他已經(jīng)被實做在Qt4, GNOME,Windows以及 Maemo 行動系統(tǒng)中。GNOME也逐漸的用它來取代了大部分的早期Bonobo機制。 介紹 D-Bus 允許程式在其上注冊以提供服務給其他的程式。同時他也提供客戶端程式查詢有哪些服務是可得的可能性。程式也可注冊以等待kernel之events比如說硬件的熱插拔。 D-Bus 被以daemon的方式實做。使用者可以執(zhí)行好幾個D-Bus的實體,每個實體被稱為一個channel。通常系統(tǒng)中會有一個特權的channel稱之為system channel,以及每個使用者擁有一個私有的實體。使用者需要私有的實體因為system channel將有存取的限制。 System channel主要的公用在于傳遞HAL的訊息給對這些訊息感興趣的processes。而私有的實體之功能在于提供程式間無限制的溝通。 架構 D-BUS是一個設計目標為應用程序間通信的消息總線系統(tǒng)。它是個3層架構的進程間通信(IPC)系統(tǒng),包括: 函數(shù)庫libdbus,用于兩個應用程序呼叫聯(lián)系和交互消息。 一個基于libdbus構造的消息,總線守護進程可同時與多個應用程序相連,并能把來自一個應用程序的消息路由到0或者多個其他程序。 一系列基于特定應用程序框架的Wrapper庫。 D-BUS為了兩個特定情況而設計: 同一個桌面會話中兩個桌面應用程序的通信,可使得桌面會話作為整體集成在一起以解決進程生命周期的相關問題。 桌面會話和操作系統(tǒng)的通信,這里操作系統(tǒng)一般而言包括內核和系統(tǒng)守護進程。 D-BUS運作方式 所有使用D-BUS的應用程序都包含一些對象,它們一般映射為GObject、QObject、C++對象、或者Python對象(也許不需要)。一個對象是一個實例而不是類型。當經(jīng)由一個D-BUS連接受到一條消息時,該消息是被發(fā)往一個對象而不是整個應用程序。 為了允許消息能指定接受對象,還要提供引用對象的方法。在你偏愛的編程語言中,它也許叫做指針或者引用。但是上述所謂引用一般實現(xiàn)為與應用程序相關的內存地址,因此無法在應用程序之間傳遞。 為了解決這一問題,D-BUS為每個對象引入名字。這些名字看起來像是文件系統(tǒng)路徑,例如一個對象可能叫做“/org/kde/kspread/sheets/3/cells/4/5”。易讀的路徑名是受鼓勵的做法,但也允許使用諸如“/com/mycompany/c5yo817y0c1y1c5b”等,只要它可以為你的應用程序所用。 Namespacing的對象路徑以開發(fā)者所有的域名開始(如 /org/kde)以避免系統(tǒng)相同進程內不同代碼模塊互相干擾。
移動通信網(wǎng) | 通信人才網(wǎng) | 更新日志 | 團隊博客 | 免責聲明 | 關于詞典 | 幫助