OSGi Technology
OSGI規范為網絡服務定義了一個標準的、面向組件的計算環境。將OSGI服務平臺添加到一個網絡設備中,可以為其增加在網絡的任何地方管理組件的生命周期的能力。軟件組件可以從運行中被安裝、升級或者移除而不需要中斷設備的操作。軟件組件可以動態的發現和使用其他庫或者應用程序。通過這個平臺,軟件組件可以作為商品在柜臺中出售以及在家里開發。OSGI聯盟已經開發出很多標準組件接口,從普通的功能如:HTTP server、configuration、 logging、security、user administration、XML等等很多。一致的插件機制可以使這些組件滿足不同買主的不同需求。
軟件組件架構致力于一個軟件開發中越來越大的問題:大量的基礎配置需要開發和維護。標準化的OSGI組件架構顯然可以簡化這個配置過程。
OSGI規范的核心組件使OSGI框架。該框架為應用程序(被成為bundles)提供一個標準化的環境。這個框架被分為以下幾個層次: · L0: 執行環境 · L1: 組件模塊 · L2: 組件生命周期管理 · L3: 服務注冊 另外,還有一個安全機制深深的纏繞在所有的層中。 |
|
| |
| |
| |
|
安全是基于java和java2的安全模塊。語言的設計限制了許多可能的結構。比如在病毒中常用的buffer溢出是不可能出現的。語言中的訪問控制限制了其他開發者對代碼的可見度。OSGI通過允許在標準的java中不可見的私有類來擴展這個模型。Java2的安全模塊提供了一個全面的模型來檢查代碼對資源的訪問權限。OSGI也添加了全面的動態權限管理。
在框架的上層,OSGI聯盟定義了很多services。Services通過java接口定義。Bundles可以實現這些接口并注冊到service注冊器上。這些service的客戶端可以通過注冊器找到它們,或者當它出現/消失時對它作出反應。
下面的章節描述了OSGi Release 3 services的概況。更多的信息可以在OSGi Release 3 services的book或PDF中得到。注意每個service都被定義為抽象的,并且獨立于不同提供者的實現。
OSGI框架提供一個權限管理服務,一個包管理服務和一個啟動級別服務。這些服務是框架的一部分(可選)并指向操作的。
框架服務如下:
? Permission Admin:通過本服務現在或將來能夠操作的bundles。權限在它們被設置時即時生效。
? Package Admin :Bundles同Classes和resources共享包。Bundles的升級可能需要系統重新計算依賴關系。這個Package Admin服務提供實際包在系統中的共享情況的信息,并且能夠刷新已共享的包。I.e.打破依賴和重新計算依賴。
? Start Level :啟動級別是一組應該一起運行或在其他服務之前初始化的bundles。啟動級別服務設置當前啟動級別,指定一個bundle的啟動級別并且查看當前設置。
系統服務提供每個實際系統所需要的底層功能。例如:Log Service, Configuration Admin Service, Device Access Service, User Admin Service, IO Connector Service和Preferences 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 Service:IO Connector Service實現CDC/ CLDC javax.microedition.io包作為一個service.這個service允許bundles實現新的、可選的協議。
? Preferences Service:這個service提供分層的屬性數據庫的訪問。類似于windows的注冊表或者java的屬性類。
OSGI聯盟還定義了一組服務,每個OSGI服務對應一個外部協議:
? Http Service:Http service是一個servlet運行環境。Bundles能夠提供可通過http協議訪問的servlets。OSGI平臺的動態更新工具使http service變成了一個非常吸引人的web server,因為它可以遠程動態更新servlet而不需要重啟
? UPnP Service:統一即插即用(UPnP)是一個對用戶電器暴露的統一接口。OSGI UPnP Service通過service注冊器對應一個設備到一個UPnP網絡。可選的,它也能夠對應一個OSGI service到一個UPnP網絡。這在release3規范中是被推薦的做法。
? Jini Service:Jini是一個網絡協議用來發現網上的Jini服務并從該服務器上下載這些服務的java代碼并執行它們。這在release3規范中是被推薦的做法。
? Wire Admin Service :通常bundles建立尋找它們想要與之合作的service的規則。然而,通常這應該在部署時決定。Wire Admin service將一個配置文件中定義的不同service連接到一起。Wire Admin service使用生產者消費者模式在service之間交換對象。
? XML Parser Service: XML Parser service允許一個bundle通過指定的屬性定位一個解析器并同JAXP兼容。
OSGI規范有廣泛的適用性,是因為它是在一個單獨的JVM中的一個很小的層,并允許多樣的、基于java的、組件的高效合作。它提供一個可擴展的安全機制以便組件可以運行在一個受保護的環境。而且,通過適當的權限,組件可以重用和合作,而不像其他java應用環境。OSGI框架提供一個可擴展排隊機制使得這種合作變得可能和安全。
基于OSGI的中間件的存在為OSGI組件提供了廣闊的市場。OSGI平臺嚴格的定義似的組件能夠運行在各種各樣的設備上,從手持設備到大型主機。
采用OSGI規范還可以降低提供新業務的軟件開發成本。
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