21認(rèn)識(shí)軟硬整合設(shè)計(jì)樣式.doc_第1頁(yè)
21認(rèn)識(shí)軟硬整合設(shè)計(jì)樣式.doc_第2頁(yè)
21認(rèn)識(shí)軟硬整合設(shè)計(jì)樣式.doc_第3頁(yè)
21認(rèn)識(shí)軟硬整合設(shè)計(jì)樣式.doc_第4頁(yè)
21認(rèn)識(shí)軟硬整合設(shè)計(jì)樣式.doc_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

21.認(rèn)識(shí)軟硬整合設(shè)計(jì)樣式認(rèn)識(shí)軟硬整合設(shè)計(jì)樣式-以Android的Binder機(jī)制為例By高煥堂一、簡(jiǎn)介Android的Binder機(jī)制Android的Binder機(jī)制是Android應(yīng)用框架(ApplicationFramework)里的重要機(jī)制。此機(jī)制用來(lái)系結(jié)(Bind)不同的Service,并進(jìn)行跨進(jìn)程(IPC)的遠(yuǎn)距溝通。這個(gè)機(jī)制(Mechanism)配上Binder.java等抽象類別,就融入于Android應(yīng)用框架里,為Android上的千千萬(wàn)萬(wàn)應(yīng)用程序提供遠(yuǎn)距溝通的管理及服務(wù)。本文將從高煥堂的MB樣式和CPU樣式來(lái)認(rèn)識(shí)Android這個(gè)重要機(jī)制。一方面,從樣式看出Android機(jī)制的特性;另一方面,藉由Android實(shí)際情境深刻體會(huì)MB與CPU樣式的真諦,將來(lái)就可以將這兩個(gè)樣式應(yīng)用于自己開發(fā)的應(yīng)用框架或其它設(shè)計(jì)上。二、高煥堂的軟硬整合設(shè)計(jì)樣式(Pattern)于2007年4月12日,我在北京.中關(guān)村進(jìn)行專題演講時(shí),提出十個(gè)主要的軟硬整合設(shè)計(jì)樣式(可以到網(wǎng)站下載筆者于北京中關(guān)村的演講稿和錄音檔案。講題是:如何提升軟件設(shè)計(jì)力)。其中的第7和第8個(gè)樣式為:7:MBpatternIntent:降低adapter間之相依姓。Force1:系統(tǒng)經(jīng)常需要與其它系統(tǒng)溝通。Force2:adapter是壁虎的尾巴,會(huì)隨system而PnP。Force3:在PnP掉adapter時(shí),經(jīng)常牽動(dòng)多個(gè)其它adapter。Solution:設(shè)計(jì)adapter的共同adapter。Consequences:此共同adapter就是一個(gè)軟件主機(jī)板(softwareMB),而小adapter就成為它的端口(port)。圖1軟件主機(jī)板(softwareMB)是整合核心8:CPUpatternIntent:統(tǒng)一管理整合性的法則(rule)。Force1:各系統(tǒng)經(jīng)常需要提供整體性的數(shù)據(jù)給它的使用者(user),其整合性之法則常分散于各系統(tǒng)里。Force2:為了維持整體和諧,需要對(duì)整合性法則進(jìn)行統(tǒng)一管理。Solution:設(shè)計(jì)一個(gè)系統(tǒng),它代表整體(whole)而負(fù)責(zé)協(xié)調(diào)其它系統(tǒng),確保完整性和實(shí)時(shí)性。Consequences:此系統(tǒng)就是一個(gè)softwareCPU,成為整體的決策中心,它也很容易PnP它來(lái)面對(duì)法則的迅速變化。圖2軟件CPU是決策核心雖然CPU用來(lái)協(xié)調(diào)與控制其它系統(tǒng)(如A、P、.等系統(tǒng)),但就MB而言,CPU也是一個(gè)System,只是其角色和任務(wù)較特殊而已。三、藉由上述樣式來(lái)理解Binder機(jī)制在Binder機(jī)制里,除了眾多Service之外,還有兩個(gè)重要的組件,就是:ServiceManager和BinderKernelDriver(簡(jiǎn)稱BinderKernel)。其中,BinderKernel提供許多界面(如IServiceManager)給各Service使用,它扮演著MB的角色。而ServiceManager扮演CPU角色。雖然ServiceManager用來(lái)協(xié)調(diào)與控制其它服務(wù)(如A、P、.等服務(wù)),但就BinderDriver而言,ServiceManager也是一個(gè)Service,只是其角色和任務(wù)較特殊而已。四、AndroidsBinder機(jī)制的運(yùn)作邏輯Step-1.手機(jī)啟動(dòng)時(shí),ServiceManager先向BinderDriver登記(就像將CPU插到MB一樣)。Step-2.BinderDriver將它(即ServiceManager)視為第0個(gè)服務(wù),于是誕生一個(gè)服務(wù)Handle#0來(lái)對(duì)應(yīng)到它。圖3Step-3.ServiceA向BinderDriver取得Handle#0的界面:IServiceManager。圖4Step-4.ServiceA呼叫IServiceManager接口的addService(),將自己登錄進(jìn)去。此時(shí),BinderDriver會(huì)誕生一個(gè)新Handle#1來(lái)對(duì)應(yīng)它;并且告知ServiceManager。圖5Step-5.ServiceP呼叫IServiceManager接口的getService()函數(shù),要求連結(jié)(ConnectorBind)到特定的Service。此時(shí),ServiceManager就將Handle#1傳給ServiceP,如下:圖6Step-6.于是,ServiceP與ServiceA就連結(jié)起來(lái)了。五、結(jié)語(yǔ)上述的BinderDriver是整合核心,相當(dāng)于主機(jī)板(MB),合乎MB樣式之本意。而ServiceManager是決策核心,相當(dāng)于CPU,合乎CPU樣式之本意。如此,至少有兩

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論