zoukankan      html  css  js  c++  java
  • 让你的程序动起来——支持动态更新或者热插拔

    过去写了一个运行环境,支持以模块化的方式进行程序开发和管理,当时考虑做一个大项目的时候可以将独立的模块分配到多个开发小组并行进行,从而提高开发效率,实践过程中确实也达到了最初的设定目标。但是我们不会至此停留不前,经过一年的应用我们发现了一点问题,相信很多做项目的同僚都会发现,项目要随需而变不但要求框架本身易于扩展,还要求在运行时能够动态更新,要不然就只能等系统闲下来的时候再更新,这也是为什么很多人都选择夜里更新程序的原因(白天很多在线用户)。随需而变嘛,把模块的加载再改进一步,支持动态加载就OK了,更新模块的时候直接覆盖,系统监视文件变化,自动重新加载,用户完全感觉不到系统已经升级了。

    改进主要涉及两个方面:

    1.程序集的加载

      要求程序集不能被占用,因为如果被Asp.net进程占用的话,覆盖文件会导致整个应用重新启动,这样就不能用原来的Assembly.LoadFrom了,替换的解决方法是Assembly.Load(byte[] rawAssembly)

    2.监视模块更新变化

      用系统自带的文件变化监视类FileSystemWatcher就可以实现

  • 相关阅读:
    双重标准,我该怎么解决
    今天突然点开一个网页
    反省
    (无)
    (无)
    GetModuleHandleW 分析
    关于逆向360相关的一点感想
    OpenGL的编译和使用
    360 补天平台,也没个什么人啊。。。
    openssl编译方法
  • 原文地址:https://www.cnblogs.com/boolean/p/2262905.html
Copyright © 2011-2022 走看看