模塊化和插件化-小結(jié)
現(xiàn)在我們來對OSGi.NET的“模塊化和插件化”做一個小結(jié),再次把官方的說明拿出來。
1) 物理隔離:基于UIOSP開發(fā)的模塊是一個物理隔離的可單獨部署的模塊,每一個模塊擁有獨立的文件夾、類型空間、資源和類加載器。模塊間互相獨立、互相隔離且互不影響。
a) 先看看上面實例目錄結(jié)構(gòu)
b) 很明顯的看出,三個模塊的確是被“隔離“在三個不同的文件夾內(nèi),且Calculator.Demo1和RemotingManagement、WebServiceWrapperService無依賴,即前者無法知道后兩者是否存在,也不需要知道,他們相互不影響。因為我們將Calculator.Demo1放入Plugins目錄之前或之后,對于其他兩個模塊來說,沒有什么不同,沒有影響他們的功能和作用。同樣,我們將RemotingManagement、WebServiceWrapperService移出Plugins目錄后,也不會對Calculator.Demo1有影響。
c) 但RemotingManagement和WebServiceWrapperService是相互依賴的,WebServiceWrapperService作為一個Web Service包裝器向RemotingManagement提供服務(wù),所以RemotingManagement要依賴WebServiceWrapperService。當移掉WebServiceWrapperService之后,RemotingManagement就無法正常啟動,OSGi.NET會拋出異常并記錄在log.txt中。
為了驗證OSGi.NET的這個“依賴解析”功能,我們將WebServiceWrapperService移出Plugins目錄。照常按F5啟動程序,界面上你是看不到任何變化,但這時再打開“遠程管理工具”,就提示“無法連接到遠程服務(wù)器”了。
同時,在log.txt中會出現(xiàn)依賴解析異常信息
2) 高度可重用:模塊的重用不需要再更改任何代碼,只需要將模塊拷貝到UIOSP指定的插件目錄下,它的功能便向其它模塊暴露。
a) RemotingManagement和WebServiceWrapperService就是最好的例子,幾乎模板中每個主應(yīng)用程序都包含這兩個模塊,且都是一樣的。
3) 規(guī)范化:模塊具有統(tǒng)一的標準,每一個模塊的目錄結(jié)構(gòu)、模塊配置都是統(tǒng)一的,開發(fā)方法也完全一致。
a) Plugins里的三個模塊幾乎相同,Manifest.xml,程序集或以來程序及和資源文件等。
4) 快速集成:僅需要將模塊都拷貝到指定的插件目錄就能夠?qū)崿F(xiàn)模塊功能的快速集成,無需再更改任何的代碼。
a) 同理2)中a)描述。
5) 易部署和升級:通過拷貝即可實現(xiàn)部署和升級。
a) 同理2)中a)描述。