這是大約在3-4年前完成的一個C#實作的OSGi框架,實作的程序參照了OSGi規范與與一些實作思路(感謝當時參考過的那些資料與專案),此框架雖然僅在幾個小型專案有過實際的應用,但OSGi的規范實作還是相對比較完整的,包涵了一些基本的要素,由于個人的專案重心已經轉移,現在打算把它公開出來,供大家參考:
OSGi.NET框架是一個參照了OSGi規范的模塊化管理框架。框架為應用程式擴展(組件(bundle))提供了一個標準環境。整個框架可以劃分為一些層次:
1.運行環境
2.模塊(Bundle)
3.生命周期管理
4.服務注冊
5.擴展點支持
目前OSGi.NET具有如下特色:
1.組件的可插拔性:組件可根據業務需要在運行時進行裝載、卸載操作
2.組件的動態更新:組件在運行時可更新替換當前版本
3.組件的版本隔離:不同組件參考相同產品的不同版本程式集可以版本隔離
4.組件完整的生命周期:包括已安裝、已裝載、已激活、啟動中、停止中、已卸載
5.組件的加載順序:組件加載根據業務要求可設定加載級別來控制加載次序
6.組件的通信支持:組件間通過面向服務的編程模型來達到組件間通信、呼叫的目的
7.組件的擴展支持:組件提供了擴展點及其擴展來滿足某個組件的擴展性支持
啟動一個OSGi.NET應用程式僅需要如下代碼
using System;
using OSGi.NET.Core.Root;
namespace ConsoleDemo
{
class Program
{
static void Main(string[] args)
{
//創建框架工廠
var frameworkFactory = new FrameworkFactory();
//創建框架內核
var framework = frameworkFactory.CreateFramework();
//初始化框架
framework.Init();
//啟動框架
framework.Start();
Console.ReadLine();
}
}
}
創建一個OSGi.NET專案需要:
1.參考框架內核程式集OSGi.NET.dll
2.添加框架內核組態檔OSGi.NET.properties
3.如需要日志支持,添加log4net.config檔案及log4net.dll程式集參考
OSGi.NET專案的默認檔案目錄結構如下
/程式目錄
/程式目錄/Bundles/
/程式目錄/Bundles/模塊A/
/程式目錄/Bundles/模塊A/Manifest.xml
/程式目錄/Bundles/模塊A/模塊A.dll
/程式目錄/Bundles/模塊A/Libs/
/程式目錄/Bundles/模塊A/Libs/* .dll
/程式目錄/Bundles/模塊B/
/程式目錄/Bundles/模塊C/
/程式目錄/Libs/(可選)
/程式目錄/OSGi.NET.properties
注:
程式目錄中的Libs檔案夾存放個Bundles的共享程式集(也可通過在組態檔中配置共享清單),如介面契約、公共第三方類別庫等。
模塊A中的Libs檔案夾存放其私有程式集。
Manifest.xml作為程式清單檔案對模塊進行自描述。
OSGi.NET.properties為框架內核組態檔
關于加載次序:
由于業務需求,各模塊存在依賴關系的可能,所以模塊加載也會有加載順序的要求,此時可以通過清單檔案中Manifest.xml,Bundle節點的StartLevel屬性對其加載次序進行設定。數值越小,加載越前。
關于Bundle參考程式集搜索原則:
1.根據加載的Bundle參考程式集,依據程式集名稱+版本號匹配原則,優先從[/程式目錄/Libs/]目錄或共享清單中搜索。
2.如第一步無匹配,則根據程式集名稱從[/程式目錄/Bundles/模塊A/Libs/*.dll]目錄搜索,并將搜索到的程式集對應版本關聯Bundle。
3.各Bundle下Libs目錄程式集在加載中做了Bundle間的隔離,確保不同的Bundle參考的程式集間不會造成影響。即:如存在共享程式集請放置[/程式目錄/Libs/]目錄或在共享清單配置。
Github地址: https://github.com/FreezeSoul/OSGi.NET
uj5u.com熱心網友回復:
對于開源行為推薦下uj5u.com熱心網友回復:
我只是來看架構的
uj5u.com熱心網友回復:
支持開源,感謝分享uj5u.com熱心網友回復:
哇,你啥時候成版主了
先巴結一下
uj5u.com熱心網友回復:
都1年了……
uj5u.com熱心網友回復:
開源必須支持下啊uj5u.com熱心網友回復:
開源必須支持uj5u.com熱心網友回復:
支持開源,頂lzuj5u.com熱心網友回復:
支持
uj5u.com熱心網友回復:
支持開源,下載一下框架看看
uj5u.com熱心網友回復:

uj5u.com熱心網友回復:
感謝分享,支持開源uj5u.com熱心網友回復:
挺好的,支持開源uj5u.com熱心網友回復:
感謝樓主分享轉載請註明出處,本文鏈接:https://www.uj5u.com/net/63508.html
標籤:C#
上一篇:【分享】GIF螢屏錄制工具
