來源: 認識軟硬整合設計樣式
相關:olv: 一千零一夜之 Android Binder
認識軟硬整合設計樣式
---- 以Android的Binder機製為例
By 高煥堂
一、 簡介Android的Binder機制
Android的Binder機制是Android應用框架(Application Framework)裡的重要機制。此機制用來繫結(Bind)不同的Service,並進行跨進程(IPC)的遠距溝通。這個機制(Mechanism)配上Binder.java等抽象類別,就融入於Android應用框架裡,為Android上的千千萬萬應用程式提供遠距溝通的管理及服務。本文將從高煥堂的MB 樣式和CPU樣式來認識Android這個重要機制。一方面,從樣式看出Android機制的特性;另一方面,藉由Android實際情境深刻體會MB與CPU樣式的真諦,將來就可以將這兩個樣式應用於自己開發的應用框架或其它設計上。
二、 高煥堂的「軟硬整合設計樣式(Pattern)」
於2007年4月12日,我在北京.中關村進行專題演講時,提出十個主要的軟硬整合設計樣式(可以到www.umlchina.com網站下載筆者於北京中關村的演講稿和錄音檔案。講題是:如何提昇軟體設計力)。其中的第7和第8個樣式為:
7: MB pattern
Intent: 降低adapter間之相依姓。
Force 1: 系統經常需要與其它系統溝通。
Force 2: adapter是壁虎的尾巴,會隨system而PnP。
Force 3: 在PnP掉adapter時,經常牽動多個其他adapter。
Solution: 設計adapter的共同adapter。
Consequences: 此共同adapter就是一個軟體主機板(software MB),而小adapter就成為它的端口(port)。
圖1 軟體主機板(software MB)是整合核心
8: CPU pattern
Intent: 統一管理整合性的法則(rule)。
Force 1: 各系統經常需要提供整體性的數據給它的使用者(user),其整合性之法則常分散於各系統裡。
Force 2: 為了維持整體和諧,需要對整合性法則進行統一管理。
Solution: 設計一個系統,它代表整體(whole)而負責協調其它系統,確保完整性和即時性。
Consequences: 此系統就是一個software CPU,成為整體的決策中心,它也很容易PnP它來面對法則的迅速變化。
圖2 軟體CPU是決策核心
雖然CPU用來協調與控制其他系統(如A、P、….等系統),但就MB而言,CPU也是一個System,只是其角色和任務較特殊而已。
三、 藉由上述樣式來理解Binder機制
在Binder機制裡,除了眾多Service之外,還有兩個重要的組件,就是:ServiceManager和Binder Kernel Driver(簡稱Binder Kernel)。其中,Binder Kernel提供許多介面(如IServiceManager)給各Service使用,它扮演著MB的角色。而ServiceManager扮演CPU角色。
雖然ServiceManager用來協調與控制其他服務(如A、P、….等服務),但就Binder Driver而言,ServiceManager也是一個Service,只是其角色和任務較特殊而已。
四、 Android's Binder機制的運作邏輯
Step-1. 手機啟動時,ServiceManager先向Binder Driver登記(就像將CPU插到MB一樣)。
Step-2. Binder Driver將它(即ServiceManager)視為第0個服務,於是誕生一個服務Handle #0 來對應到它。
圖3
Step-3. Service A向Binder Driver取得Handle #0的介面:IServiceManager。
圖4
Step-4. Service A呼叫IServiceManager介面的addService(),將自己登錄進去。 此時,Binder Driver會誕生一個新Handle #1來對應它;並且告知ServiceManager。
圖5
Step-5. Service P呼叫IServiceManager介面的getService()函數,要求連結(Connect or Bind)到特定的Service。 此時,ServiceManager就將Handle #1傳給Service P,如下:
圖6
Step-6. 於是,Service P與Service A就連結起來了。
五、 結語
上述的Binder Driver是整合核心,相當於主機板(MB),合乎MB 樣式之本意。而ServiceManager是決策核心,相當於CPU,合乎CPU樣式之本意。如此,至少有兩種益處:
1. 當一個複雜系統的整合核心與決策核心很明顯時,其複雜度就能大幅下降。
2. 當一個軟體系統的整合核心與決策核心很明顯時,其架構很類似硬體的基本架構,有效促進軟硬架構的整合,是軟硬整合設計的基礎。
留言列表