隨筆 - 59, 文章 - 4, 評論 - 184, 引用 - 7
          數據加載中……

          OSGi Technology

           

          Introduction

          OSGI規范為網絡服務定義了一個標準的、面向組件的計算環境。將OSGI服務平臺添加到一個網絡設備中,可以為其增加在網絡的任何地方管理組件的生命周期的能力。軟件組件可以從運行中被安裝、升級或者移除而不需要中斷設備的操作。軟件組件可以動態的發現和使用其他庫或者應用程序。通過這個平臺,軟件組件可以作為商品在柜臺中出售以及在家里開發。OSGI聯盟已經開發出很多標準組件接口,從普通的功能如:HTTP serverconfiguration loggingsecurityuser administrationXML等等很多。一致的插件機制可以使這些組件滿足不同買主的不同需求。

          軟件組件架構致力于一個軟件開發中越來越大的問題:大量的基礎配置需要開發和維護。標準化的OSGI組件架構顯然可以簡化這個配置過程。

          The Framework

          OSGI規范的核心組件使OSGI框架。該框架為應用程序(被成為bundles)提供一個標準化的環境。這個框架被分為以下幾個層次:

          ·  L0: 執行環境

          ·  L1: 組件模塊

          ·  L2: 組件生命周期管理

          ·  L3: 服務注冊

          另外,還有一個安全機制深深的纏繞在所有的層中。

          framework  

          L0  L0:執行環境就是java環境的規范。Java2配置和profiles,如j2seCDCMIDP等等都是可用的執行環境。OSGI還標準化了一個基于基本profile的執行環境和一個可用于OSGI bundles的最小執行環境的規范。

          L1  L1:模塊層定義了類加載策略。OSGI框架是一個健壯而嚴格定義的類加載模型。它基于java但是更加模塊化。在java中,通常只有一個單獨的classpath包含所有的classresourceOSGI模塊層為一個模塊添加私有的類并控制模塊之間的關聯。

          L2  L2:生命周期層添加能夠動態的安裝、啟動、停止、升級和卸載的bundlesBundles加載class時依賴于模塊層,但也一個API在運行期管理模塊。生命周期層引入了通常不屬于應用一部分的動態性。廣泛的依賴機制過去常用于確認環境的當前操作。

          L3  L3層添加了一個服務注冊器。服務注冊器為bundles提供了一個協作模塊用于動態注冊。Bundles可以通過傳統的class共享來協作,但是class共享與動態安裝和卸載的代碼不太協調。服務注冊器提供了一個全面的模塊似的bundles可以共享對象。一些事件被定義來處理服務的加載和卸載。服務只是一些能夠代表任何東西的java對象。很多服務的活動一個HTTP服務器,其他服務代表了真實世界中的一個對象,比如:附近的一個藍牙電話

          安全是基于javajava2的安全模塊。語言的設計限制了許多可能的結構。比如在病毒中常用的buffer溢出是不可能出現的。語言中的訪問控制限制了其他開發者對代碼的可見度。OSGI通過允許在標準的java中不可見的私有類來擴展這個模型。Java2的安全模塊提供了一個全面的模型來檢查代碼對資源的訪問權限。OSGI也添加了全面的動態權限管理。

          Standard Services

          在框架的上層,OSGI聯盟定義了很多servicesServices通過java接口定義。Bundles可以實現這些接口并注冊到service注冊器上。這些service的客戶端可以通過注冊器找到它們,或者當它出現/消失時對它作出反應。

          下面的章節描述了OSGi Release 3 services的概況。更多的信息可以在OSGi Release 3 servicesbookPDF中得到。注意每個service都被定義為抽象的,并且獨立于不同提供者的實現。

          Framework Services

          OSGI框架提供一個權限管理服務,一個包管理服務和一個啟動級別服務。這些服務是框架的一部分(可選)并指向操作的。

          框架服務如下:

          ?  Permission Admin:通過本服務現在或將來能夠操作的bundles。權限在它們被設置時即時生效。

          ?  Package Admin BundlesClassesresources共享包。Bundles的升級可能需要系統重新計算依賴關系。這個Package Admin服務提供實際包在系統中的共享情況的信息,并且能夠刷新已共享的包。I.e.打破依賴和重新計算依賴。

          ?  Start Level :啟動級別是一組應該一起運行或在其他服務之前初始化的bundles。啟動級別服務設置當前啟動級別,指定一個bundle的啟動級別并且查看當前設置。

          System Services

          系統服務提供每個實際系統所需要的底層功能。例如:Log Service, Configuration Admin Service, Device Access Service, User Admin Service, IO Connector ServicePreferences Service

          Log Service:記錄通過log service處理的information, warnings, debug 信息或者error。它獲得log實體然后分派這些消息實體到訂閱該消息的bundles

          Configuration Admin Service:該service提供一個靈活和動態的模型來設置和訪問配置信息。

          Device Access Service:設備訪問是一個OSGI機制,當有新的設備添加時,它為新設備匹配驅動,并下載一個bundle來實現該驅動。這對即插即用的情形非常有用。

          User Admin Service:這個服務使用一個用戶信息的數據庫(私有或共有)來達到授權和認證的目的。

          IO Connector ServiceIO Connector Service實現CDC/ CLDC javax.microedition.io包作為一個service.這個service允許bundles實現新的、可選的協議。

          Preferences Service:這個service提供分層的屬性數據庫的訪問。類似于windows的注冊表或者java的屬性類。

          Protocol Services

          OSGI聯盟還定義了一組服務,每個OSGI服務對應一個外部協議:

          Http ServiceHttp service是一個servlet運行環境。Bundles能夠提供可通過http協議訪問的servletsOSGI平臺的動態更新工具使http service變成了一個非常吸引人的web server,因為它可以遠程動態更新servlet而不需要重啟

          UPnP Service:統一即插即用(UPnP)是一個對用戶電器暴露的統一接口。OSGI UPnP Service通過service注冊器對應一個設備到一個UPnP網絡。可選的,它也能夠對應一個OSGI service到一個UPnP網絡。這在release3規范中是被推薦的做法。

          Jini ServiceJini是一個網絡協議用來發現網上的Jini服務并從該服務器上下載這些服務的java代碼并執行它們。這在release3規范中是被推薦的做法。

          Miscellaneous Services

          Wire Admin Service :通常bundles建立尋找它們想要與之合作的service的規則。然而,通常這應該在部署時決定。Wire Admin service將一個配置文件中定義的不同service連接到一起。Wire Admin service使用生產者消費者模式在service之間交換對象。

          XML Parser Service XML Parser service允許一個bundle通過指定的屬性定位一個解析器并同JAXP兼容。

          Conclusion

          OSGI規范有廣泛的適用性,是因為它是在一個單獨的JVM中的一個很小的層,并允許多樣的、基于java的、組件的高效合作。它提供一個可擴展的安全機制以便組件可以運行在一個受保護的環境。而且,通過適當的權限,組件可以重用和合作,而不像其他java應用環境。OSGI框架提供一個可擴展排隊機制使得這種合作變得可能和安全。

          基于OSGI的中間件的存在為OSGI組件提供了廣闊的市場。OSGI平臺嚴格的定義似的組件能夠運行在各種各樣的設備上,從手持設備到大型主機。

          采用OSGI規范還可以降低提供新業務的軟件開發成本。

          Further Reading

          OSGi Service Platform, Release 3 download or buy the book at reduced cost.

          OSGI聯盟撰寫了一個技術白皮書 和一個白板模式白皮書 來深入的解釋該項技術。

           

          posted on 2005-06-03 21:39 fisher 閱讀(2979) 評論(0)  編輯  收藏 所屬分類: Other

          主站蜘蛛池模板: 海林市| 诸暨市| 陆丰市| 桐庐县| 龙井市| 成安县| 镇巴县| 迁安市| 东光县| 龙泉市| 大姚县| 靖边县| 信宜市| 永康市| 定结县| 竹山县| 平湖市| 南溪县| 常熟市| 沙洋县| 青龙| 庐江县| 大竹县| 保亭| 通许县| 绥江县| 香河县| 内黄县| 石柱| 南涧| 博乐市| 梁河县| 达孜县| 屏山县| 江城| 南江县| 漯河市| 安福县| 芜湖县| 大厂| 咸宁市|