來源: 認識軟硬整合設計樣式
相關:olv: 一千零一夜之 Android Binder

 

認識軟硬整合設計樣式

---- AndroidBinder機製為例

    

      By 高煥堂

 

一、                簡介AndroidBinder機制

    AndroidBinder機制是Android應用框架(Application Framework)裡的重要機制。此機制用來繫結(Bind)不同的Service,並進行跨進程(IPC)的遠距溝通。這個機制(Mechanism)配上Binder.java等抽象類別,就融入於Android應用框架裡,為Android上的千千萬萬應用程式提供遠距溝通的管理及服務。本文將從高煥堂的MB 樣式和CPU樣式來認識Android這個重要機制。一方面,從樣式看出Android機制的特性;另一方面,藉由Android實際情境深刻體會MBCPU樣式的真諦,將來就可以將這兩個樣式應用於自己開發的應用框架或其它設計上。

   

二、 高煥堂的「軟硬整合設計樣式(Pattern)

   2007412,我在北京.中關村進行專題演講時,提出十個主要的軟硬整合設計樣式(可以到www.umlchina.com網站下載筆者於北京中關村的演講稿和錄音檔案。講題是:如何提昇軟體設計力)。其中的第7和第8個樣式為:

   

   7: MB pattern

Intent: 降低adapter間之相依姓。

Force 1:  系統經常需要與其它系統溝通。

Force 2:  adapter是壁虎的尾巴,會隨systemPnP

Force 3:  PnPadapter時,經常牽動多個其他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用來協調與控制其他系統(AP….等系統),但就MB而言,CPU也是一個System,只是其角色和任務較特殊而已。

 

三、 藉由上述樣式來理解Binder機制

     

    Binder機制裡,除了眾多Service之外,還有兩個重要的組件,就是:ServiceManagerBinder Kernel Driver(簡稱Binder Kernel)。其中,Binder Kernel提供許多介面(IServiceManager)給各Service使用,它扮演著MB的角色。而ServiceManager扮演CPU角色。

    雖然ServiceManager用來協調與控制其他服務(AP….等服務),但就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 ABinder 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 PService A就連結起來了。

 

五、 結語

    

   上述的Binder Driver是整合核心,相當於主機板(MB),合乎MB 樣式之本意。而ServiceManager是決策核心,相當於CPU,合乎CPU樣式之本意。如此,至少有兩種益處:

1.       當一個複雜系統的整合核心與決策核心很明顯時,其複雜度就能大幅下降。

2.       當一個軟體系統的整合核心與決策核心很明顯時,其架構很類似硬體的基本架構,有效促進軟硬架構的整合,是軟硬整合設計的基礎。

huenlil 發表在 痞客邦 PIXNET 留言(0) 人氣()