国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

.NET實現熱插拔功能(動態替換功用)方案實例

2024-07-10 12:44:18
字體:
來源:轉載
供稿:網友

幾種方案

1 腳本化:采用 Iron 或 集成其它腳本引擎。
2 AppDomain:微軟的 Add In 框架就是為這個目的設計的。
3 分布式 + 負載平衡 :輪流更新集群中的服務器。
4 Assembly.LoadFrom + 強簽名程序集:因為相同標識的程序集在內存中只會加載一次,所以每次功能發生變化,都要增加程序集的版本號。
5 Assembly.Load +  + 強簽名程序集 + GAC:因為相同標識的程序集在內存中只會加載一次,所以每次功能發生變化,都要增加程序集的版本號。
6 Assembly.LoadFile:Assembly.LoadFile 可以多次加載相同標識的程序集,只要程序集所在的目錄位置不同。

重點說一下 Assembly.LoadFile

測試代碼

代碼如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Reflection;
using System.IO;
using Contracts;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            SetupPlugEnvironment();

            ExecuteOperator("1.0.0.0");
            ExecuteOperator("2.0.0.0");
        }

        private static void ExecuteOperator(string version)
        {
            var operatorType = Type.GetType("Implements.Operator, Implements, version = " + version + "");
            var operatorInstance = Activator.CreateInstance(operatorType) as IOperator;
            operatorInstance.Operate();
        }

        private static void SetupPlugEnvironment()
        {
            AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
        }

        static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
        {
            AssemblyName name = new AssemblyName(args.Name);

            var file = Path.Combine(
                @"E:/Coding/HappyStudy/LoadContextStudy/Test/bin/Debug/Plugs",

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 延边| 桐乡市| 巩留县| 墨玉县| 手机| 通许县| 九江市| 吉木萨尔县| 东阳市| 渝中区| 綦江县| 莱芜市| 潞西市| 禹城市| 莎车县| 两当县| 宁陕县| 岑巩县| 当涂县| 镇坪县| 石泉县| 屏东县| 饶平县| 临汾市| 于都县| 大余县| 绿春县| 夏邑县| 镇坪县| 义乌市| 湘潭市| 阜康市| 武冈市| 平定县| 腾冲县| 西吉县| 东乡县| 清河县| 高密市| 米脂县| 英德市|