Junky's IT Notebook

          統(tǒng)計

          留言簿(8)

          積分與排名

          WebSphere Studio

          閱讀排行榜

          評論排行榜

          OSGi技術(shù)

          OSGi技術(shù)

          原文:
          http://www.osgi.org/osgi_technology/index.asp?section=2

          簡介

          OSGi規(guī)范為網(wǎng)絡(luò)化的服務(wù)定義了一個標準的,面向組件的計算環(huán)境.給網(wǎng)絡(luò)設(shè)備添加OSGi服務(wù)平臺,使之可以有能力在網(wǎng)絡(luò)的任何地點管理軟件組件的生命周期.組件可以在運行期間被安裝,更新或刪除,無需打斷設(shè)備的其他操作.軟件組件是可以動態(tài)查找和使用其他組件的庫或程序.軟件組件可以通過購買或自行開發(fā).OSGi聯(lián)盟已經(jīng)開發(fā)了許多標準的組件接口,諸如HTTP服務(wù)器,配置,日志管理,安全,用戶管理,xml等等這些常用功能.可以從不同的提供商那里獲得這些即插即用的兼容實現(xiàn).

          軟件組件體系正面臨一個日益凸現(xiàn)的問題:大量需要開發(fā)和維護的配置.而標準化的OSGi組件體系極大的簡化了這個配置過程.

          框架
          OSGi規(guī)范的核心組件是OSGi框架.他為應(yīng)用提供了一個被稱為包捆(bundle)標準環(huán)境.OSGi包括這樣四層:
          L0.執(zhí)行環(huán)境
          L1.模塊
          L2.生命周期管理
          L3.服務(wù)注冊表
          此外還包含一個安全系統(tǒng).

          執(zhí)行環(huán)境就是Java環(huán)境.J2SE,CDC,CLDC,MIDP等都是合法的執(zhí)行環(huán)境.OSGi同時根據(jù)核心定義(foundation profile)和一個最簡版本制定了一個標準的執(zhí)行環(huán)境.
          模塊層定義了類裝載策略.OSGi框架是一個強大的類裝載模型.以Java為基礎(chǔ)但加入了模塊化的思想.在Java中,只有一個包含了所有的可用類和資源類路徑.OSGi的模塊層還為一個模塊提供了私有類以及模塊之間的連接.
          生命周期層將包捆動態(tài)地安裝,啟動,停止,更新和卸載,包捆依賴于模塊層的類裝載但提供了一套API來在運行期管理所有的模塊.擴展的依賴機制用于確保正確模塊依賴關(guān)系.
          服務(wù)注冊表為包捆提供一個互操作模型實現(xiàn)動態(tài)性.包捆可以通過傳統(tǒng)的類共享來互操作,但是類共享在當動態(tài)安裝和卸載代碼時會表現(xiàn)得很不穩(wěn)定.服務(wù)注冊表提供了一個易于理解的模型來在包捆之間共享對象.大量的事件被定義于處理服務(wù)之間的交互.服務(wù)如同Java對象一樣,可以代表任何事物.許多服務(wù)和對象是一樣的,像http服務(wù)器,服務(wù)就是現(xiàn)實中的一個對象,比如一個附近的藍牙電話.

          安全是建立在Java和Java2安全模型之上.語言級的限制避免了許多可能出現(xiàn)的隱患(The language by design limits many possible constructs). 比如,病毒常用的緩沖區(qū)溢出是不可能的.訪問修飾符可以限制代碼的可見性.OSGi通過"允許私有類"擴展了這一模型,在標準Java中不包含這種機制.Java2安全模型提供一個易理解的模型來檢查代碼對資源的訪問權(quán)限.OSGi加入了完全的對訪問請求動態(tài)管理.

          標準服務(wù)

          在框架之上,OSGi聯(lián)盟制定了許多服務(wù).服務(wù)由一個Java接口定義.包捆可以實現(xiàn)這個接口并把實現(xiàn)注冊到服務(wù)注冊表.服務(wù)的用戶可以從服務(wù)注冊表中找到他,或者對服務(wù)的加入或取消做出反應(yīng).
          以下各部分給出OSGi release 3服務(wù)的一個簡單介紹.更多資料可以找OSGi服務(wù)平臺release 3的書籍或PDF下載.要注意每個服務(wù)都是先被抽象地定義然后由不同廠商獨立實現(xiàn).

          框架服務(wù)

          OSGi框架提供一個權(quán)限管理服務(wù)(permission admin service ),一個包管理服務(wù)(package admin servie),和一個啟動級別服務(wù)(start level service).這些服務(wù)是可選的 and direct the orperation of the Framework(不知道怎么譯).
          • 訪問管理(Permission Admin) - 當前或?qū)淼陌Φ脑L問權(quán)限可以通過這個服務(wù)來操作.
          • 包管理(Package Admin) - 包捆之間共享類和資源.包捆的更新可能需要系統(tǒng)重新更新包捆之間的依賴關(guān)系.該服務(wù)提供系統(tǒng)實際包的共享狀態(tài)并刷新共享的包.如,取消或者重新計算依賴關(guān)系.
          • 啟動級別(Start Level) - 啟動級別是一個包捆的集合,這個集合中的包捆必須一同運行或者要在其他服務(wù)啟動之前初始化.啟動級別服務(wù)設(shè)置當前的啟動級別,制定某個包捆的啟動級別,查看當前設(shè)置.

          系統(tǒng)服務(wù)

          系統(tǒng)服務(wù)提供橫向功能(horizontal function),這些在每個真實的系統(tǒng)中都是存在的.比較常見的有,日志服務(wù)(Log Service),配置管理服務(wù)(Configuration Admin Service),設(shè)備訪問服務(wù)(Device Access Service),用戶管理服務(wù)(User Admin SErvice),IO連接服務(wù)(IO Connector Service)和參數(shù)選擇服務(wù)(Preferences Service).
          • 日志服務(wù) - 信息,警告,調(diào)試信息的紀錄,或者處理錯誤.他接收日志紀錄信息然后分配他們給其他訂閱了這些信息的包捆
          • 配置管理服務(wù) - 該服務(wù)提供一個易伸縮的動態(tài)模型來設(shè)置和獲得配置信息
          • 設(shè)備訪問服務(wù) - 設(shè)備訪問是配置一個驅(qū)動器到一個新設(shè)備并自動下載實現(xiàn)該驅(qū)動器的包捆的機制
          • 用戶管理服務(wù) - 該服務(wù)使用一個用戶信息數(shù)據(jù)庫(私有和公有)來鑒權(quán)和授權(quán).
          • IO連接服務(wù) - 實現(xiàn)了CDC/CLDC的javax.microedition.io包作為一個服務(wù).該服務(wù)允許包捆提供新的,可選協(xié)議方案.
          • 參數(shù)選擇服務(wù) - 提供屬性數(shù)據(jù)庫的訪問.和Windows的注冊表或Java的Preferences類.


          協(xié)議服務(wù)
          OSGi聯(lián)盟定義了以下外部協(xié)議服務(wù):
          • Http服務(wù) - 一個servlet容器.包捆可以提供servlet.OSGi的動態(tài)更新機制服務(wù)平臺使得Http服務(wù)變得非常誘人,加入新的servlet而不需要重啟.

          • UPnp服務(wù) - 通用即插即用(Universal Plug and Play)是一個正在興起的用于用戶電子設(shè)備的標準,OSGi UPnP 將一個UPnP網(wǎng)絡(luò)設(shè)備映射到服務(wù)注冊表.或者,將一個服務(wù)映射到UPnP網(wǎng)絡(luò)(該服務(wù)在release 3中被推薦).
          • Jini服務(wù) - Jini是一個網(wǎng)絡(luò)協(xié)議,用于在網(wǎng)絡(luò)上發(fā)現(xiàn)Jini服務(wù)并下載執(zhí)行.(該服務(wù)在release 3中被推薦).

          其他服務(wù)
          • 關(guān)聯(lián)管理服務(wù)(Wire Admin Service) - 通常包捆會自己建立查找服務(wù)的規(guī)則.但是在很多情況下,這是一個發(fā)布時需要考慮的問題.因此關(guān)聯(lián)管理服務(wù)會通過一個配置文件把不同的服務(wù)連接起來.使用消費者和生產(chǎn)者的概念來達到對象之間的互操作.
          • XML解析服務(wù) - 允許一個包捆定位一個解析器并使用相應(yīng)的屬性.與JAXP兼容.

          結(jié)論
          OSGi規(guī)范的適用范圍很廣.因為它通過一個很簡單的層使得同一個虛擬機的Java組件高效率的交互.通過一個擴展的安全模型來使組件運行在一個安全的環(huán)境中.通過恰當?shù)脑L問限制,組件可以被重用和組合.OSGi 框架還提供了一個擴展的部署機制來讓這種交互可行,安全.

          各個領(lǐng)域構(gòu)建在OSGi之上的中間件的大量出現(xiàn),這就給OSGi軟件組件創(chuàng)造了一個很大的軟件市場.The rigid definition of the OSGi Service Platform enables components that can run on a variety of devices, from very small to very big. 

          采用OSGi規(guī)范可以降低軟件開發(fā)成本,同時提供新的商業(yè)機會.

          進一步閱讀
          OSGi Service Platform, Release 3下載:
          http://www.osgi.org/osgi_technology/download_specs2.asp?section=2
          或買書:
          https://secure.inventures.com/osgi/sales/R3Book_order_form.asp

          OSGi聯(lián)盟寫的技術(shù)白皮書:
          http://www.osgi.org/documents/osgi_technology/osgi-sp-overview.pdf
          更深入介紹OSGi的白板白皮書(whiteboard whitepaper):
          http://www.osgi.org/documents/osgi_technology/whiteboard.pdf

          譯者:derekzhangv.at.hotmail.com
          歡迎指正,討論

          posted on 2008-01-21 10:11 junky 閱讀(880) 評論(0)  編輯  收藏 所屬分類: framework


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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 开封县| 台安县| 大洼县| 扎赉特旗| 北海市| 施秉县| 仁寿县| 潼关县| 衡东县| 上高县| 克什克腾旗| 濉溪县| 乌兰县| 晴隆县| 延吉市| 利津县| 微博| 中山市| 如皋市| 和平县| 鄂尔多斯市| 万盛区| 金坛市| 凤山县| 秀山| 乌拉特后旗| 镇巴县| 伊通| 苏尼特左旗| 武冈市| 登封市| 揭西县| 商水县| 阳东县| 佛山市| 武冈市| 锡林浩特市| 平和县| 行唐县| 奇台县| 新乡市|