溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

.NET應(yīng)用加載容器Glue4Net

發(fā)布時(shí)間:2020-07-21 19:38:40 來(lái)源:網(wǎng)絡(luò) 閱讀:434 作者:ikende 欄目:編程語(yǔ)言
在寫ASP.NET的應(yīng)用的時(shí)候我們只需要把寫好的WEB程序放到IIS即可,在更新的時(shí)候只需要把文件復(fù)制過(guò)去IIS就可以自動(dòng)重新加載相關(guān)WEB程序。如果是寫一些win服務(wù)程序或一個(gè)服務(wù)端應(yīng)用程序就沒(méi)有這么幸運(yùn),在更新的時(shí)候由于文件被占用導(dǎo)致在更新前不得不把相關(guān)服務(wù)停止;這樣導(dǎo)致程序更新非常麻煩,如果程序只有一兩個(gè)還可以但是服務(wù)程序比較多的情況那則是相應(yīng)麻煩的事情,為了解決這一系列問(wèn)題所以實(shí)現(xiàn)Glue4Net這樣一個(gè)應(yīng)用加載組件。
.NET應(yīng)用加載容器Glue4Net

功能

組件的主要功能是構(gòu)建一個(gè)新的AppDomain加載指定目錄的程序集具體功能如下:

  • 自動(dòng)加載目錄的.NET程序集

  • 自動(dòng)加載目錄下的代碼文件并添加到應(yīng)用域中

  • 自定義監(jiān)控文件變更,變更重新加載相應(yīng)的服務(wù)

  • 自定義應(yīng)用模塊,在加載的自動(dòng)運(yùn)行。

使用

組件的使用非常簡(jiǎn)單,只需要構(gòu)建DomainAdapter并指定相關(guān)參數(shù)即可:

DomainAdapter da = new DomainAdapter(@"C:\Test",
    "TEST", new DomainArgs { Compiler=true, UpdateWatch= true, WatchFilter=new string[]{"*.cs"} });
da.Log = new ConsoleEventLogImpl();
da.Load();

以是上是從C:\Test目錄上構(gòu)建一個(gè)應(yīng)用域,并指定相應(yīng)的加載參數(shù);具體參數(shù)描述是編譯目錄下的cs和vb文件,啟用對(duì)*.cs的文件進(jìn)行監(jiān)控,當(dāng)發(fā)現(xiàn)有文件變更的情況重新加載應(yīng)用。

應(yīng)用構(gòu)建規(guī)則

由于應(yīng)用是通過(guò)組件加載,所以應(yīng)用的編寫需要遵循一些規(guī)則,應(yīng)用目錄下必須存在Glue4Net.dll和Log4net.dll.組件在加載應(yīng)用后會(huì)自動(dòng)運(yùn)行應(yīng)用中實(shí)現(xiàn)IAppModule的對(duì)象。對(duì)于應(yīng)用的編寫可以編譯成DLL或直接在應(yīng)用目錄下存放相應(yīng)的代碼文件即可。

using System;  
public class TestModule : Glue4Net.IAppModule
    {
        public string Name
        {
            get {return "TEST"; }
        }
        public Glue4Net.IEventLog Log
        {
            get;
            set;
        }
        public void Load()
        {
            Log.Info("Module loaded!",DateTime.Now);
        int a =0;
        Log.Info(a.ToString());
        }
        public void UnLoad()
        {
                                       
        }
    }

測(cè)試

.NET應(yīng)用加載容器Glue4Net


源代碼

https://github.com/IKende/IKendeLib/tree/master/Glue4Net


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI