<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

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


    網站導航:
     
    主站蜘蛛池模板: 亚洲高清国产拍精品青青草原 | 国产精品偷伦视频免费观看了 | 亚洲av日韩av永久在线观看| 美女视频黄的全免费视频| 亚洲综合一区二区精品久久| 精品熟女少妇a∨免费久久| 亚洲高清不卡视频| 可以免费看黄的网站| 亚洲国产区男人本色在线观看| 成全视频免费高清| 亚洲AV噜噜一区二区三区| 国产伦一区二区三区免费 | 色费女人18女人毛片免费视频| 一区国严二区亚洲三区| 免费手机在线看片| 亚洲欧洲日产国码无码久久99| 久久精品免费一区二区三区| 亚洲最大在线观看| 四虎影视大全免费入口| 黄色免费网址大全| 亚洲尹人香蕉网在线视颅| 三年片在线观看免费大全 | 亚洲蜜芽在线精品一区| 四虎永久在线观看免费网站网址| 亚洲AV无码一区二区三区网址| 亚洲国产精品自产在线播放| 成人免费av一区二区三区| 亚洲天天在线日亚洲洲精| 欧美a级在线现免费观看| 美女黄网站人色视频免费| 久久精品视频亚洲| 24小时日本在线www免费的| 草久免费在线观看网站| 久久久亚洲裙底偷窥综合| 在线观着免费观看国产黄| 最近2019中文免费字幕在线观看| 2017亚洲男人天堂一| 亚洲色欲一区二区三区在线观看| 13一14周岁毛片免费| 国产精品99爱免费视频| 亚洲一卡二卡三卡四卡无卡麻豆|