隨筆-1  評論-9  文章-7  trackbacks-0

          OSGi誕生初期,其目的主要是能夠靈活方便并遠(yuǎn)程管理互聯(lián)的網(wǎng)絡(luò)嵌入設(shè)備,OSGi聯(lián)盟上對于OSGi service platform有這樣一句解釋:The OSGi service platform delivers an open, common architecture for service providers, developers, software vendors, gateway operators and equipment vendors to develop, deploy and manage services in a coordinated fashion.OSGi service platform是一個開放并且提供通用接口標(biāo)準(zhǔn)的體系框架,基于這個體系框架,服務(wù)提供商,程序開發(fā)人員,軟件提供商,服務(wù)網(wǎng)管運營商,設(shè)備提供商能夠協(xié)調(diào)地聯(lián)合起來開發(fā),部署以及管理向用戶提供的各種服務(wù))。隨著OSGi的發(fā)展,逐漸被引入到企業(yè)應(yīng)用領(lǐng)域。

          目前,OSGi規(guī)范的最新版本為R4.2,有關(guān)該規(guī)范的詳細(xì)情況請閱讀OSGi實戰(zhàn)的第7節(jié)——深入OSGiOSGi框架主要分為四部分:運行環(huán)境(executionenvironment)、模塊(Modules)、生命周期管理(Life Cycle)、服務(wù)注冊(Service Registry)。運行在OSGi環(huán)境中的是一個個的Bundle,也就是Modules的具體實現(xiàn)。

          對于每個bundle,都有各自的ClassLoader,在這一點上和傳統(tǒng)的Web應(yīng)用有相似之處,在傳統(tǒng)的Web應(yīng)用開發(fā)完成之后,都會將其部署在TomcatJboss等服務(wù)器上,這些Web應(yīng)用都有著各自的ClassLoader環(huán)境,而兩者之間的區(qū)別在于,傳統(tǒng)的Web應(yīng)用無法做到資源的共享,因為它們是完全獨立、隔離的。OSGi框架為bundle之間的協(xié)作提供了底層支持,通過在bundleMANIFEST.MF文件中Import-PackageExport-Package等項,bundle之間就能相互共享資源及服務(wù),在以后的博文中,我將給出一個具體的示例。

          由于OSGi具有良好的模塊化結(jié)構(gòu),我個人認(rèn)為這將為將來的軟件開發(fā)方式帶來很大的沖擊,將更進一步推進模塊化開發(fā)。目前Web應(yīng)用的開發(fā)一般采用SSH框架,將整個應(yīng)用大致分為Web(負(fù)責(zé)前臺展現(xiàn))、Service(負(fù)責(zé)業(yè)務(wù)邏輯處理)、DAO(負(fù)責(zé)數(shù)據(jù)持久化)、Domain(全局實體類)幾個模塊,而發(fā)布的時候,將被一起打成WAR包,部署至服務(wù)器上。如果采取bundle的形式,每個模塊可以做為獨立的bundle進行開發(fā)和部署,bundle之間的協(xié)作可以通過上述的方式進行,而這樣帶來的好處就是,一旦需要對某個模塊進行更改,在保證依賴接口不變的前提下,就可以單獨更改相應(yīng)的bundle,再進行熱部署即可,這樣一來,好處是顯而易見的,有效的分離了各個模塊,減少了維護成本。

          由于采用bundle的形式,也增強了模塊的復(fù)用性。這也是得益于OSGi良好的模塊化方式。

          另外一個很重要的點就是OSGi具備熱拔插特性,bundle的安裝、啟動、停止、卸載都可以在運行時指定,并且可以隨時更改。這樣一來,我們就可以做到無需重啟整個應(yīng)用,而只對需要更改的部分進行升級或打補丁即可。Bundl的狀態(tài)圖轉(zhuǎn)換如下圖所示:


          1 OSGi bundle狀態(tài)轉(zhuǎn)換圖

          以上將OSGi的一些基本的,但也是很重要的東西大概介紹了一下,在以后的博文中逐步深入吧。以上都是關(guān)于OSGi原理性的東西,那么實現(xiàn)該規(guī)范的有哪些產(chǎn)品呢?最有名的應(yīng)該要數(shù)EclipseEquinox框架了,在網(wǎng)上查資料見有人說過,Eclipse3.0的那一次升級把自身的構(gòu)架做了一次非常大的調(diào)整,其主要原因就是采用了OSGi框架,更好的支持了Eclipse的插件體系。另外還有Felixknopflerfish等。

          不過話說回來,盡管OSGi有很多好處,但是現(xiàn)在主要還是應(yīng)用在服務(wù)器端,如現(xiàn)在的應(yīng)用服務(wù)器基本上都采用OSGi的框架,而真正的應(yīng)用市場仍處理起步階段,這和OSGi的生態(tài)環(huán)境還不成熟,可喜的是Spring推出了其Spring DMSpringSource DM Server,前者能夠很方便發(fā)布和引用服務(wù),并且與Spring Framework平臺相融合,將OSGibundle contextSpring applicationContext融合在一起,大大方便了OSGi的應(yīng)用。后者是OSGi bundle的運行環(huán)境,是一個將EquinoxTomcat融合在一起的服務(wù)器。在以后的博文中將詳細(xì)介紹這些內(nèi)容。

          posted on 2010-03-28 11:47 Dreava 閱讀(613) 評論(0)  編輯  收藏 所屬分類: OSGi

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 县级市| 石城县| 高淳县| 萨嘎县| 浑源县| 右玉县| 鹤山市| 吉林省| 西畴县| 苗栗市| 宜昌市| 威远县| 乐东| 板桥市| 长葛市| 四川省| 水富县| 永宁县| 喀喇沁旗| 遂昌县| 克什克腾旗| 略阳县| 甘泉县| 英山县| 丹江口市| 苍南县| 将乐县| 土默特左旗| 秦安县| 习水县| 延吉市| 栾城县| 西藏| 南安市| 始兴县| 佳木斯市| 景宁| 襄汾县| 东台市| 华蓥市| 镇安县|