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