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

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

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

    OSGi Extender Model啟示錄

    Peter在2月23的時候在OSGi的官方網站上貼了這么一篇blog,挺經典,至少讓我學到了一些東西,建議關注OSGi或者關心系統設計中資源管理的人都看看,在這篇blog中我簡單的將peter寫的blog的意思大概寫一下,也不全部翻譯了,另外說一下自己的看法。
    引起Peter寫這篇blog的主要原因是對于使用程序的資源文件的例子的介紹,例如在windows中,當我們安裝了editplus后,假設我們把txt的打開方式已經設置為了editplus,但此時我們不能隨意的將editplus目錄隨意的轉移,當轉移后就會出現txt無法再用editplus打開了,而在mac中,程序的文件目錄是可以隨意轉移的,轉移并不會影響到使用它的文件,顯然后者強于前者,其實也就類似于現在倡導的綠色軟件的概念,Peter也提及了為什么在mac中實現了這個,而在windows中沒實現,mac使用了小型數據庫來記錄程序所在的路徑等等信息,windows通常使用注冊表來記錄,這里并沒有什么很大的差別,差別在于在mac中當移動目錄或刪除目錄時會發送消息給小型數據庫,使得其做出相應的同步動作,而windows則不會,這也就決定了在mac中可以隨意的去移動或刪除程序,而在windows中則不能。
    從這樣的一個問題中,peter想到了基于OSGi也實現一個這樣的智能的資源管理的東西,他把它稱為Extender Model,其實我覺得有點象擴展點,不過不同的地方就在于它增加了一個資源管理的概念,資源管理最重要的其實就是關注資源的改變(安裝、刪除、移動等),peter以servlet這個為例,來說明了OSGi Extender Model的實現方法以及意義,基于OSGi Extender Model的話,就可以使得servlet本身不用再去主動調用HttpService.registerServlet來注冊,而是由一個Servlet Extender Model實現的Bundle Listener來根據Bundle的安裝、卸載、更新等狀態來主動的加載、卸載、更新servlet,可以看到,在這樣的情況下的好處就是Servlet Bundle本身不用再去關注Http Service的狀態,同時也不用去調用HttpService的東西,這呢,從另外一個角度去看,大家就會發現,這也是一種非常符合DI思想的設計,采用Extender Model這種設計方法就可以做到資源不用主動的去調用容器來實現對于其自身生命周期的管理,這樣就使得整個系統處于更加靈活的體系中了,非常的爽。
    其實實現OSGi Extender Model非常的簡單,編寫一個Bundle Listener,監聽Bundle的安裝、卸載、更新動作,同時根據Bundle的元信息中的描述做出相應的反應(如Servlet Bundle Listener就是當監聽到有Bundle安裝時,即解析Bundle的元信息,如其中含有ServletMap這樣的信息,則獲取其具體信息,并注冊其中的Servlet)。
    如果感興趣的話,請同學們去查看Peter的這兩個帖子:
    http://www.osgi.org/blog/2007/02/osgi-extender-model.html
    http://www.aqute.biz/Snippets/Extender

    這個OSGi Extender Model給了我們什么啟示呢:
    1、Declarative方式的使用
    ????? Declarative無非是現在一種非常非常流行的軟件設計理念,在這樣的理念中,可以盡量的保證當前組件的簡單,而通過Declarative的方式去增強的描述該組件,其實在spring中最重要的也是這個思想,而在OSGi的DS中也是這么一個思想,聲明式的編程自然讓整個系統的體系變得非常的簡單和靈活,并且大大提升系統組件的可重用性,特別是對于編譯型的語言而言,在OSGi Extender Model中通過Declarative的方式說明了定義Bundle中的資源,容器則自動的對其生命周期進行管理,這充分的發揮了Declarative的優勢(聲明式的增強功能)以及DI思想(運行于容器中的東西不需要主動調用容器來實現注入、生命周期管理這些功能等)的特點。
    2、跨Bundle的資源管理方式
    ????? 跨Bundle的資源管理其實是之前基于OSGi搭建Webwork+Spring+Hibernate這樣結構的難處,總是沒想到很好的方法去管理Hibernate的PO文件,采用OSGi Extender這種思想的話這個就很容易實現了,不過Hibernate還存在的一個問題就是SessionFactory的重建,這個對于動態化來講是有一定的影響的,因為sessionfactory的重建消耗的時間太長了點,同樣的道理,對于Webwork Action的管理也是如此。

    posted on 2007-03-20 22:10 BlueDavy 閱讀(3957) 評論(1)  編輯  收藏 所屬分類: OSGi、SOA、SCA

    評論

    # re: OSGi Extender Model啟示錄[未登錄] 2007-03-22 13:59 shakebaby

    BlueDavy大哥前邊走,我跟在后邊學習……  回復  更多評論   

    公告

     









    feedsky
    抓蝦
    google reader
    鮮果

    導航

    <2007年3月>
    25262728123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    統計

    隨筆分類

    隨筆檔案

    文章檔案

    Blogger's

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 精品一区二区三区免费观看| 丝袜捆绑调教视频免费区| 国产在线观看免费不卡| 一级黄色免费网站| 亚洲AV无码专区在线播放中文| 91热成人精品国产免费| 美女黄频视频大全免费的| 亚洲成AV人片在线观看WWW| 巨波霸乳在线永久免费视频 | 免费一级特黄特色大片在线观看| 免费人成激情视频在线观看冫| 亚洲欧洲精品视频在线观看| 又大又硬又爽免费视频| 99久久免费观看| 偷自拍亚洲视频在线观看| 亚洲午夜精品一区二区| 免费v片视频在线观看视频| 久久国产精品免费网站| 妇女自拍偷自拍亚洲精品| 亚洲成色在线综合网站| 国产男女猛烈无遮挡免费视频 | 亚洲AV无码之国产精品| 久久久久亚洲AV成人无码| 成人爱做日本视频免费| 小草在线看片免费人成视久网| 最新亚洲人成无码网站| 911精品国产亚洲日本美国韩国| 亚洲av无码乱码在线观看野外 | 一级毛片aaaaaa免费看| 免费大片av手机看片| 亚洲va成无码人在线观看| 国产精品亚洲片在线| 四虎AV永久在线精品免费观看| 222www免费视频| 东北美女野外bbwbbw免费| 亚洲成在人线在线播放无码| 亚洲欧洲中文日产| 亚洲国产精品无码一线岛国| 亚洲高清不卡视频| 日韩亚洲人成在线综合日本| 亚洲国产高清精品线久久|