<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

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

     

    目前,關注OSGi的人變得越來越多,OSGi本身也早已從那個專注于嵌入式平臺的“小”角色轉變過來了,慢慢向企業級應用市場滲透。

    從某種角度說,Eclipse可以說是OSGi在企業應用領域的試金石,2003Eclipse3.0做了一次架構上的調整,繼續延用插件的架構思想,但是從3.0版之后,是基于OSGi的實現。也就是這一次的調整,推動了Eclipse的迅猛發展。

    這是在桌面應用的成功示例,而OSGi的目標遠不止于此,以其優秀的類加載機制,可以說,只需對其進行擴展,那么就可以目標瞄準任何一個領域。談到企業應用,無可避免的要涉及Web應用,相信大多數人都在從事該領域的開發。OSGi R4版已明確提出了對Web的支持方式——當然,這種方式還是很有限的,這一點將在后面的文章中詳細說明。

    鑒于此,很多開源框架都已經或正準備發布支持OSGi的版本,比如Spring DM、Struts1.8.1、CXF等等,基本上日常所用的開源框架都發布了基于OSGi版本。另外,有不少應用服務器也已經基于OSGi進行實現,比如WAS6.1版就已經是基于OSGi的實現,而Spring也在2009年推出了Spring DM Server,可見OSGi的吸引力還是很大的。

    那么這一切將會為以后的開發帶來什么影響呢?本文試圖從OSGi和構件化開發的角度認識一下該問題。

    OSGi的類加載機制非常優秀,為每個運行于其中的bundle創建了獨立的類加載器環境,而運行于同一個OSGi框架內部的bundle之間不像Web服務器中的Web應用那樣絕緣,它們之間是可以進行包依賴的,當然OSGi也提供了服務注冊等相關機制,確保bundle之間的相互協作能力。而且OSGi支持bundle動態部署。所以,系統無需停機重啟,就可以實現其內部的動態更新。

    構件化開發的概念已經提了很多年了,似乎一直缺乏一種有效的機制對其進行支持。構件化開發為系統開發帶來了很多好處,整個系統的開發可以按照模塊的方式進行劃分,從而按模塊進行開發;系統由各模塊之間拼裝而成,通過代碼一級的依賴或者服務依賴的方式;對于某個模塊進行更新,只要保持接口不變,則可以實現對外界無影響。

    由于缺乏有效的底層支持,構件化開發方式一直沒有推行起來。由其對于Web應用而言,想要實現構件化開發,似乎更是無從談起。

    OSGi的出現,讓這一事情有所轉機。傳統的Web應用開發過程中,可能大多數人的做法就是將一個大的Web應用按功能模塊進行劃分,通過包切分來實現模塊化開發,但是各模塊之間并沒有從物理上隔離,只是以一種組織方式上的約束,使其從表面看上去是分離的。對于這種方式,動態更新某個模塊也就無從談起了。

    而如果將OSGi引入Web應用,每個模塊都對應于一個bundle,那么模塊與模塊之間則從物理上進行了隔離,能有效的將模塊內部實現對外隱藏。模塊之間的交互,可以通過接口的導出與引用來實現,對于未經導出的部分,對于其他模塊是不可見的。另外,由于OSGi支持bundle的熱部署,那就意味著,在當前Web應用未停機的情況下,可以對某個或某些模塊(對應OSGi中的bundle)進行動態更新,而不影響整個應用的正常運行。

    這種從物理上的有效隔離的方式,為重用帶來了新的方式。以前代碼一級的重用,一般都通過Jar包的形式進行,而這種方式存在上述的一些缺點,即封裝性不夠。而通過基于OSGibundle的形式,則可以有效隱藏內部實現,從包一級進行隱藏(這一點個人覺得可以作為Java封裝性的一種擴展,以前的封裝只能做到類一級,不知道未來是否會被Java規范吸收)。

    就這一點而言,OSGi對構件化開發進行了很好的支持,當然OSGi并不為此而生。

    以上所說的構件依賴都是基于API一級的,那么當然,我們也可以將Web Service等類型服務封裝至構件當中,再結合ESB,是不是對SOA的一種更好實現呢!ESB的關注點在于服務,這是一種細粒度的,它并不考慮服務的封裝、重用等方面——這些方面都由設計人員去把握。而結合OSGi,當然還需要其他設施的支持,比如CXF已經發布了基于OSGi的實現,可以將服務封裝至一個bundle,以bundle為單元,向外界提供服務,這種服務即變成了一種粗粒度的——構件的特點之一。

    綜上所述,我相信,OSGi的發展,將會為構件化的開發方式帶來福音。

    引出話題:OSGiSCA在很多方面有著異曲同工這妙,并且SCA的實現框架——Tuscany也對OSGi做了支持。這兩者有互補特性,有時間將對這兩者做一個對比研究。

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

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


    網站導航:
     
    主站蜘蛛池模板: 亚洲国产精品久久久久久| 永久免费视频v片www| JLZZJLZZ亚洲乱熟无码| WWW亚洲色大成网络.COM| 大地资源二在线观看免费高清| 91亚洲国产在人线播放午夜| 久久免费观看国产99精品| 亚洲视频.com| 国产成人免费网站| 亚洲欧洲专线一区| 免费A级毛片无码A| CAOPORM国产精品视频免费| 国产啪亚洲国产精品无码| 久久国产乱子伦精品免费强| 伊人久久综在合线亚洲2019| 亚洲免费人成视频观看| 美女视频黄免费亚洲| 在线日韩av永久免费观看| 一级免费黄色大片| 亚洲av永久无码精品秋霞电影影院 | 性生交片免费无码看人| 亚洲欧美成人av在线观看| 免费jjzz在线播放国产 | 偷自拍亚洲视频在线观看99| 亚洲成?Ⅴ人在线观看无码| 一级中文字幕乱码免费| 亚洲精品美女久久777777| 亚洲高清视频免费| 蜜桃传媒一区二区亚洲AV| 一本久久a久久精品亚洲| 99久久99热精品免费观看国产| 在线综合亚洲中文精品| 亚洲国产成人精品女人久久久| 成人性做爰aaa片免费看| 亚洲国产品综合人成综合网站| 永久免费看mv网站入口| 久爱免费观看在线网站| 亚洲精品乱码久久久久久V| 亚洲中文字幕在线观看| 久久久高清免费视频| 日日摸夜夜添夜夜免费视频|