zoukankan      html  css  js  c++  java
  • .NET应用加载容器KGlue

    当在更新应用的时候是否碰到以下烦琐的工作[停址服务-更新服务-启动服务];的确由于文件被程序占用所以在更新文件的时候必须把程序停止,更新完成后又手动启动.而KGlue就是为了解决以上问题而出现的,它的主要作用是使用appDomain来加载运行每个配置的应用;监控相关应用文件变化自动对应用进行卸载和重启动的服务功能.简单而言在更新应用的时候直接替换文件后,KGlue就会对程序进行重新加载.

    使用配置

    KGlue可以配置多应用程序,应用程序可以存放在KGlue能访问的任意目录下.只需要简单地在配置文件中添加相关应用目录即可.

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <configSections>
        <section name="appSection" type="KGlue.AppSection, KGlue"/>
      </configSections>
      <appSection xmlns="urn:KGlue">
         <items>
          <add name="test" path="test" args="henry fan"/>
          <add name="tcpserver" path="tcp" />
          <add name="config" path="config" />
          <add name="chatroom" path="websocket_chatroom"/>
        </items>
      </appSection>
    </configuration>

    以上配置文件描述了4个应用,path是应用对应的目录,如果不指定全路径则是KGlue运行目录下的子目录,args参数是启动应用所需要的参数,可以为空值.KGlue会根据每个配置分别启用新的appdomain来运行它们.

    应用加载规则

    KGlue支持加载DLL或代码(cs,vb),所以在发布的时候只需要提供DLL或代码文件即可.由于应用启动需要一个规则定义,所以相应的类实现KGlue.IAppAdapter即可以;KGlue会遍历配置目录下的所有DLL或代码文件在域创建后实例化所有IAppAdapter对类并调用.

        public class Class1:KGlue.IAppAdapter
        {
            public void Start(string[] args)
            {
                Console.WriteLine(args.Length);
                foreach (string item in args)
                {
                    Console.WriteLine(item);
                }
    
            }
    
            public string Name
            {
                get { return "Class1"; }
            }
    
            public void Stop()
            {
                
            }
        }

    以上是一个简单的应用,把启动参数输出.把应该文件保存到相应的目录(别忘在把KGlue.dll也放到该目录下)下并配置一下KGlue的配置文件.

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <configSections>
        <section name="appSection" type="KGlue.AppSection, KGlue"/>
      </configSections>
      <appSection xmlns="urn:KGlue">
         <items>
          <add name="test" path="d:\test" args="henry fan"/>
        </items>
      </appSection>
    </configuration>

    配置完成后只需要运行KGlue即可以看到文件编译和加载过程.

    应用的配置信息

    很多时候应用都需要把一些信息配置到配置文件中,那应用的配置信息放在那里呢?同样放在KGlue.App.exe?不需要,一般情况DLL或EXE生后都会生成对应名称的.config文件,而KGlue则需要在应该目录下有app.config文件即可以,把配置信息存储放到那里相关应用就能获取得到,如同web应用的web.config那样.

    注意

    KGlue可以加载N个应用程序,但有个地方需要注意的就是,当其中一个应用出现unhandled exception时会导致KGlue进程关闭.

    下载

    访问Beetlex的Github
  • 相关阅读:
    基于Windows环境下Myeclipse10.0下载安装破解及jdk的下载安装及环境变量的配置
    51 Nod 1791 合法括号子段【分治+字符串】
    一步一步深入理解Dijkstra算法
    POJ 3662 Telephone Lines【Dijkstra最短路+二分求解】
    拍拍网接入微信卡包备战双12圣诞购物季
    公众平台认证订阅号接口调整 增加群发接口等,可授权登录
    搜狗搜索推广品牌专区新增微信互动区展示企业微信公众号内容
    WP8版微信5.4发布 新增夜间模式 暂没小视频
    Kik CEO Ted Livingston发博称要成为西方的微信?
    微信"附近的人"新增商家公众号入驻功能
  • 原文地址:https://www.cnblogs.com/smark/p/2982247.html
Copyright © 2011-2022 走看看