OSGi帶來(lái)的規(guī)范的模塊化
規(guī)范的模塊化開(kāi)發(fā)是需要OSGi的重要理由之一,模塊化的開(kāi)發(fā)方式一直就是現(xiàn)在的主流開(kāi)發(fā)方式,但業(yè)界卻一直缺乏這樣的標(biāo)準(zhǔn),當(dāng)然,如果java本身具備這樣的標(biāo)準(zhǔn)自然就更好了,那么大家就會(huì)很自然的以同樣的方式去設(shè)計(jì)、開(kāi)發(fā)和部署模塊,但目前java暫時(shí)還沒(méi)有這樣的標(biāo)準(zhǔn),雖然之前的JSR 277(Java Module System)的目標(biāo)是制定這樣的標(biāo)準(zhǔn),但由于該標(biāo)準(zhǔn)制定完后并沒(méi)有得到業(yè)界和各大廠商的認(rèn)可,所以基本上沒(méi)起到什么作用,而現(xiàn)在JSR 291的認(rèn)可則更是觸動(dòng)了它,目前的情況看下去,OSGi成為下一個(gè)版本的Java Module System JSR只是時(shí)間的問(wèn)題而已,整個(gè)業(yè)界能夠采取統(tǒng)一的方式進(jìn)行模塊的設(shè)計(jì)、開(kāi)發(fā)是非常重要和有意義的事,這也是OSGi得到IBM等大公司支持的重要原因之一,說(shuō)了這么多背景性質(zhì)的話后開(kāi)始來(lái)看看OSGi是如何規(guī)范化模塊的開(kāi)發(fā)的:
1、模塊的定義
????? 在OSGi中模塊以Bundle的形式進(jìn)行定義,而對(duì)于模塊中的重要概念如模塊的依賴、模塊的版本、模塊對(duì)外提供的功能等都通過(guò)規(guī)范的Bundle的元數(shù)據(jù)信息來(lái)表達(dá),這就使得模塊的定義得以規(guī)范。
????? 而同樣的OSGi對(duì)于模塊的規(guī)范化的定義也是平時(shí)我們?cè)谶M(jìn)行模塊化的定義時(shí)值得參考的。
2、模塊的設(shè)計(jì)
??????在模塊的設(shè)計(jì)上首先遵循OSGi Bundle的方式無(wú)疑為我們的模塊設(shè)計(jì)提供了類似Best Practice的指導(dǎo),這個(gè)對(duì)于構(gòu)建整個(gè)系統(tǒng)而言具備非常強(qiáng)的指導(dǎo)意義,我們知道在進(jìn)行業(yè)務(wù)架構(gòu)設(shè)計(jì)時(shí)最重要的就是模塊的劃分和依賴的設(shè)計(jì),而這從OSGi上都給予了非常好的指導(dǎo)。
????? 而對(duì)于模塊本身的實(shí)現(xiàn)方面的設(shè)計(jì)而言,OSGi更是提供了Service-Oriented Component Model做為設(shè)計(jì)的指引和參考,這從本身上來(lái)講已經(jīng)提升了目前的很多的模塊的設(shè)計(jì)方法。
??????可見(jiàn),從設(shè)計(jì)這個(gè)層面上來(lái)說(shuō),OSGi不僅提供了規(guī)范化的方法,一定程度上來(lái)說(shuō)更是提供了模塊化設(shè)計(jì)的Best Practice。
3、模塊的部署
????? 在OSGi中模塊統(tǒng)一以Bundle的方式部署到系統(tǒng)中。
在以前的很多的插件式的系統(tǒng)中也能找到上面三個(gè)部分的影子,但最關(guān)鍵的是那些都不足以形成業(yè)界統(tǒng)一的規(guī)范,規(guī)范性才是模塊化中最為重要的一點(diǎn),當(dāng)然,OSGi在動(dòng)態(tài)性方面的優(yōu)勢(shì)使得它在這一領(lǐng)域占據(jù)了優(yōu)勢(shì),也使得OSGi在模塊的管理上具備很強(qiáng)的優(yōu)勢(shì),象模塊的生命周期的動(dòng)態(tài)管理、模塊的版本化管理以及模塊行為的動(dòng)態(tài)改變等。
posted on 2006-09-14 15:32 BlueDavy 閱讀(2386) 評(píng)論(8) 編輯 收藏 所屬分類: OSGi、SOA、SCA