<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

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲免费在线观看视频| 成人免费区一区二区三区| 中文字幕人成无码免费视频| 亚洲国产精品国自产电影| 免费无码毛片一区二区APP| 亚洲2022国产成人精品无码区| 成人免费区一区二区三区| 久久亚洲综合色一区二区三区| 水蜜桃视频在线观看免费播放高清| 亚洲无码精品浪潮| 99久久99这里只有免费的精品| 国产精品亚洲精品日韩已满| 大地资源中文在线观看免费版| 亚洲性天天干天天摸| www视频在线观看免费| 激情内射亚洲一区二区三区爱妻| 久久不见久久见免费影院| 亚洲丰满熟女一区二区哦| 免费萌白酱国产一区二区| 中文字幕无线码中文字幕免费| 久久亚洲精品中文字幕无码| 免费影院未满十八勿进网站| 亚洲精品无码国产片| 国产精品亚洲αv天堂无码| 久久免费精品一区二区| 亚洲冬月枫中文字幕在线看 | 亚洲午夜久久久精品电影院| 免费看国产成年无码AV片| 国产成人亚洲精品蜜芽影院| 亚洲日韩精品无码专区网址| 日韩亚洲国产高清免费视频| 在线91精品亚洲网站精品成人| 国产v亚洲v天堂无码网站| 一个人免费观看在线视频www| 男人免费视频一区二区在线观看| 亚洲AV无码专区亚洲AV伊甸园| 日本免费网址大全在线观看| 日韩毛片在线免费观看| 亚洲天天做日日做天天欢毛片| 女性无套免费网站在线看| av午夜福利一片免费看久久|