Junky's IT Notebook

          統(tǒng)計

          留言簿(8)

          積分與排名

          WebSphere Studio

          閱讀排行榜

          評論排行榜

          OSGi技術

          OSGi技術

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

          簡介

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

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

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

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

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

          標準服務

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

          框架服務

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

          系統(tǒng)服務

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


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

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

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

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

          各個領域構建在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)盟寫的技術白皮書:
          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ā)表評論。


          網站導航:
           
          主站蜘蛛池模板: 尚义县| 梓潼县| 山丹县| 永善县| 师宗县| 乐亭县| 桃源县| 自治县| 奉节县| 徐州市| 崇仁县| 蛟河市| 台南市| 桓台县| 沿河| 兴仁县| 宁阳县| 西盟| 石台县| 松潘县| 大洼县| 武平县| 镇远县| 房山区| 抚顺市| 婺源县| 阳信县| 普宁市| 六盘水市| 察隅县| 澜沧| 秦安县| 中卫市| 万源市| 孝感市| 彭泽县| 杨浦区| 江达县| 云梦县| 赣榆县| 库车县|