總結(jié)起來,OSGI的R4規(guī)范就是由Core Framework以及基于其上的各類Service組成的。Core Framework中主要包含四層部件,第一層就是運行時環(huán)境,這個就是JAVA的運行環(huán)境就OK了;第二層是Module層,Module其實就可以看成是插件吧,只不過說OSGI對于每個Module都有一個單獨的類加載器來加載它;第三層就是典型的Module生命周期的管理,按照Module的生命周期進行狀態(tài)的轉(zhuǎn)換(哈哈,現(xiàn)在看到這種狀態(tài)轉(zhuǎn)換的例子,就開始想到狀態(tài)模式了);第四層其實是服務(wù)層,為了解決Module之間的通信,那么設(shè)定了通過提供各自曝露自己的Service的方式。那么好,誰知道這些Service呢,OK,有了ServiceRegistration,那么這個對象知道所有的Service都從這里注冊,那么就知道各個對象提供的Service了:),其實是一個ServiceLocator的例子,只需要知道它,然后聲明自己需要那個服務(wù),就從這個ServiceLocator來得到自己的服務(wù)就好了。
看Module的定義其實真的沒有太多的看頭,其實和plugin.xml(不管是Eclipse的還是Apollo的都是一樣),只不過是換了個名稱而已。多了ModuleActivator的聲明,這個類就是用來控制Module的生命周期的,很有用。其它的描述除了有Module自身信息之外,還有依賴關(guān)系的描述;以及對外提供接口的描述。我們實用Provide-Service的方式來描述,其實是差不多的。 OSGI的類加載器有一套自己的定義。主要是系統(tǒng)類加載器,以及模塊的類加載器,還有默認的啟動類加載器(不是JVM的那個,而是OSGI里面定義的一個bootClassLoader) 有一張圖詳細畫了這個類加載器的結(jié)構(gòu),和OSGI進行類加載的步驟,很清晰,很好。 關(guān)于LifeCycle,就不用再啰嗦了。只要知道狀態(tài)的變化就OK了。 服務(wù)層實現(xiàn)了服務(wù)的注冊,服務(wù)的獲取,服務(wù)的監(jiān)聽,其實也是一套面向服務(wù)的體系結(jié)構(gòu),SOA嘛,這里也是簡單的實現(xiàn)。 |
|