OSGi.NET是OSGi R4.2規範移植到.NET平台的實現,是一個動態模組化框架的規範。OSGi.NET規範定義了面向組件、面向服務的編程方法。
基本介紹
平台簡介,功能,外掛程式框架原理,外掛程式運行時,面向服務,外掛程式擴展,片段外掛程式,規範原理,
平台簡介
什麼是OSGi.NET
OSGi全稱為Open Service Gateway Initiative,它一方面指由IBM、Oracle、BEA、SAP等國際IT巨頭組成的OSGi聯盟組織;另一方面指該組織制定的一個基於Java語言的服務規範——OSGi服務平台。
功能
為什麼使用OSGi.NET
OSGi.NET為企業解決以下問題:
(2)解決團隊協作問題。基於OSGi.NET框架,一個軟體一般可以按照功能和抽象層次,劃分為界面框架外掛程式、通用服務外掛程式和業務功能外掛程式,團隊有詳細的分工和不同的關注點。開發業務功能的團隊可以僅關注於實際的業務邏輯,並且多個團隊可以並行、獨立開發,最終快速組裝。
(3)解決軟體可維護性問題。基於OSGi.NET框架,組件是互相隔離,並且其依賴是通過可管理的服務來實現的,依賴粒度小。不同的組件可以有不同的版本,獨立開發、部署和測試。對組件的更改不會影響到其他組件的行為。
(4)快速回響市場變化。OSGi.NET框架實現了一個微核心,使得我們可以根據用戶需求,快速定製一個組件,然後進行快速發布。
(5)易管理、易部署、易更新。OSGi.NET的外掛程式具備物理隔離、熱插拔和動態,使持續部署、更新變為可能,並且讓您可以非常方便的管理核心。
(6)開放性。OSGi.NET是一個開放的平台,在此構建的應用程式,天生就具備了開放性。你可以通過服務向開發者提供API,通過擴展點向開發者提供功能擴展,並且可以構建私有的外掛程式倉庫。
外掛程式框架原理
外掛程式運行時
外掛程式運行時即BundleRuntime,則是外掛程式的運行容器,它負責從外掛程式目錄中載入和啟動外掛程式。
面向服務
在OSGi.NET外掛程式框架中,外掛程式具備高內聚、低耦合特性,也就是說外掛程式間耦合度非常低。服務即Service,是外掛程式通訊的方式。在這裡,“服務=接口 + 實現”。接口是服務的契約,服務提供商實現了服務的接口並將服務註冊到服務匯流排,服務消費者則通過服務契約從服務匯流排搜尋服務並綁定使用。這裡,服務是動態,可以被動態註冊、卸載和更新,一個服務契約也可能有多個服務實現。
外掛程式擴展
片段外掛程式
在OSGi.NET,有一種特殊的外掛程式,稱為片段外掛程式,即Fragment Bundle。片段外掛程式相當於子外掛程式,其作用是為了擴充其它外掛程式的類型空間、擴展信息。除了片段外掛程式的外掛程式,都是宿主外掛程式(Host Bundle)。與宿主外掛程式不同的是,片段外掛程式不能被啟動、停止,沒有類載入器,不允許從片段外掛程式載入類型。當宿主外掛程式被啟動後,片段外掛程式會自動附加到宿主外掛程式,即將片段外掛程式的類型空間、擴展信息合併到宿主外掛程式。
規範原理
OSGi.NET體系結構如下所示,從功能層次上劃分為模組層、生命周期層、服務層、安全層、基礎服務層和輔助設計工具層。
模組層定義了模組的結構、宿主模組和片段模組、模組的配置清單、模組類型依賴與解析、模組類型載入和模組本地化。模組層僅通過IBundlse向用戶暴露了LoadClass和LoadResource兩個方法,分別用於從模組載入一個類型和載入資源。基於UIOSP定義模組時,類載入必須使用這兩個方法來載入類型和資源。
生命周期層提供了模組生命周期狀態定義、狀態遷移以及狀態遷移相關的接口。它實現了模組的動態安裝、解析、啟動、停止和卸載操作。生命周期相關接口由IBundleContext和IBundle提供。IBundleContext提供了InstallBundle方法,用於在一個模組中動態安裝另一個模組。IBundle提供了Start、Stop、Uninstall生命周期操作方法,分別用於動態的啟動、停止和卸載當前模組。
服務層提供了面向服務支持。該層提供了一個服務匯流排,每一個用戶模組都可以向匯流排註冊服務和查詢與綁定需要的服務。註冊到服務匯流排的服務也是動態的,註冊服務的模組可以在必要的時候直接卸載。服務層相關的接口由IBundleContext提供,這些接口包括GetFirstOrDefaultService、GetService、AddService和RemoveService,分別用於獲取默認服務、獲取指定服務契約的所有服務、添加一個指定服務契約的服務和刪除指定服務契約的服務。
基礎服務層提供了系統服務,包括服務匯流排管理服務、外掛程式管理服務、啟動級別服務、日誌服務、擴展點管理服務、Web服務包裝器服務等服務。
輔助設計工具提供了該框架需要的工具,包括模組配置管理工具、遠程管理工具、項目模板等。