|
去年我們組要開發(fā)一個新的產(chǎn)品,在討論產(chǎn)品架構(gòu)路線的時候,美國的架構(gòu)師向大家征集了架構(gòu)設(shè)計思想(我推薦了SCSF),有一位工程師向他推薦了OSGi。以前我還沒有聽過OSGi這玩意,雖然我參加工作后,現(xiàn)學(xué)了Java和Flex,但非常菜。在工作之前我用了4年的.NET。接觸了OSGi后,發(fā)現(xiàn)它是一個面向Java的服務(wù)規(guī)范,還沒有一個像樣的面向.NET的框架(有個EgeyeAddIn,據(jù)說兼容OSGi,我看了源代碼了,覺得它離OSGi較遠(yuǎn)http://www.codeplex.com/EgeyeAddIn)。隨著對其概念的模糊了解,我覺得這玩意不錯,于是我準(zhǔn)備自己做個基于.NET的OSGi框架(因為我在業(yè)余的時候在設(shè)計一個UI框架,原先準(zhǔn)備采用SCSF,接觸了OSGi后,我決定將二者合并,重新設(shè)計OSGi+CAB的框架)。于是,我在互聯(lián)網(wǎng)找了很多次關(guān)于OSGi的資料,但很失望,沒有得到多少需要的東西。因此,我只好自己翻譯了OSGi規(guī)范前6章,邊翻譯,邊理解(當(dāng)我翻譯完第6章的時候,發(fā)現(xiàn)網(wǎng)上已經(jīng)有OSGi規(guī)范中文版了,給自己省了點事),期間我翻譯了SCSF英文指南,看了EgeyeAddIn、SharpDeveloper Core和Eclipse OSGi的源代碼,最終設(shè)計了基于.NET的OSGi規(guī)范和OSGi.NET概要圖,目前OSGi.NET測試版已經(jīng)完成,預(yù)計年底可以發(fā)布。因此,對OSGi和SOA有了更深一步的了解。
在我理解中(對于SOA,我不專業(yè),如果有誤,大家批評),目前大部分應(yīng)用的SOA中的S,已經(jīng)不是傳統(tǒng)意義的Web Service或者遠(yuǎn)程Service類似的Heavy Service,而更偏向于暴露出一個接口,向其它模塊提供通用功能的服務(wù)(或類)。在分層應(yīng)用,上層類將調(diào)用下層的類,這種依賴是層與層之間的依賴,相比沒有分層的混沌狀態(tài)的類間依賴要好很多;在SOA應(yīng)用,模塊間通過服務(wù)依賴,這種依賴是可以管理的,非常清晰,每一個模塊也很容易被重用。下圖是我理解的分層和SOA的比較。
OSGi規(guī)范是一個服務(wù)框架的規(guī)范,在OSGi中,(1)每一個模塊叫Bundle,即服務(wù)包,每個服務(wù)包向其它服務(wù)包暴露其服務(wù),服務(wù)包間服務(wù)的引用是可以管理的;(2)每一個服務(wù)包類似一個模塊,其實更是一個插件,可以被動態(tài)的加載到OSGi框架,動態(tài)注冊、引用、回收和卸載服務(wù),也可以被動態(tài)的卸載;(3)服務(wù)包在運行時的依賴是通過可管理的服務(wù)來體現(xiàn),在設(shè)計時,從功能復(fù)用的角度,即一個服務(wù)包會使用另一個服務(wù)包的類,服務(wù)包之間在設(shè)計時有一種依賴,這種依賴在服務(wù)包清單配置文件中定義,由Export、Import、Require、DynamicImport配置節(jié)組成。Export即這個服務(wù)包暴露出的可被別的包使用的類型集合定義,Import是服務(wù)包引用其他服務(wù)包Export的定義,Require則是引用了另一個服務(wù)包的所有Export定義。因此,OSGi還定義了類型加載模型,用于實現(xiàn)一個服務(wù)包從OSGi系統(tǒng)加載其依賴的類型。
OSGi內(nèi)核在實現(xiàn)上,有點復(fù)雜,在此不過說,估計關(guān)心的人會少一點,能把OSGi的SOA思想和應(yīng)用用好就Very Good了。OSGi.NET是我們團(tuán)隊利用業(yè)余時間開發(fā)的,從2008年10月份開始,借鑒了SharpDevelop、EgeyeAddin和Eclipse OSGi設(shè)計,用分層方式,劃分成配置成、解析元數(shù)據(jù)層、解析層、運行時加載層、Bundle層、Core層和Adapter層,當(dāng)然最重要的是面向最終用戶的公共接口層了,第一個版本的設(shè)計是大部分兼容OSGi規(guī)范,把認(rèn)為復(fù)雜的需求給去掉了,也簡化了Service的設(shè)計。由于接觸SOA時間比較晚,對SOA的理解沒有SOA專家體會的深,歡迎批評指正。
it知識庫:OSGi——面向服務(wù)架構(gòu)規(guī)范簡述,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。