1. 程式人生 > >osgi.net從入門到精通系列之二

osgi.net從入門到精通系列之二

體系結構從功能層次上劃分為模組層、生命週期層、服務層、安全層、基礎服務層和輔助設計工具層。

 

體系結構

 

模組層定義了模組的結構、宿主模組和片段模組、模組的配置清單、模組型別依賴與解析、模組型別載入和模組本地化。模組層僅通過IBundlse向用戶暴露了LoadClass和LoadResource兩個方法,分別用於從模組載入一個型別和載入資源。基於UIOSP定義模組時,類載入必須使用這兩個方法來載入型別和資源。

生命週期層提供了模組生命週期狀態定義、狀態遷移以及狀態遷移相關的介面。它實現了模組的動態安裝、解析、啟動、停止和解除安裝操作。生命週期相關介面由IBundleContext和IBundle提供。IBundleContext提供了InstallBundle方法,用於在一個模組中動態安裝另一個模組。IBundle提供了Start、Stop、Uninstall生命週期操作方法,分別用於動態的啟動、停止和解除安裝當前模組。

服務層提供了面向服務支援。該層提供了一個服務匯流排,每一個使用者模組都可以向匯流排註冊服務和查詢與繫結需要的服務。註冊到服務匯流排的服務也是動態的,註冊服務的模組可以在必要的時候直接解除安裝。服務層相關的介面由IBundleContext提供,這些介面包括GetFirstOrDefaultService、GetService、AddService和RemoveService,分別用於獲取預設服務、獲取指定服務契約的所有服務、新增一個指定服務契約的服務和刪除指定服務契約的服務。

安全層提供了模組安全沙箱。它實現了對模組數字簽名以實現模組完整性、提供了基於程式碼訪問安全的訪問許可權檢測以阻止模組對其它資源進行非法訪問和實現了模組間的隔離性以避免一個模組對其它模組產生影響。

基礎服務層提供了UIOSP系統服務,包括服務匯流排管理服務、外掛管理服務、啟動級別服務、日誌服務、擴充套件點管理服務、Web服務包裝器服務等服務。

輔助設計工具提供了該框架需要的工具,包括模組配置管理工具、遠端管理工具、UIOSP專案模板等。