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

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

    改进主要涉及两个方面:

    1.程序集的加载

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

    2.监视模块更新变化

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

  • 相关阅读:
    Jenkins自动化多项目编译和Tomcat部署懒人终极大招
    python 装饰器总结
    selenium3之-测试环境搭建
    centos7.4 安装ftp服务器并配置匿名用户权限
    selenium3之-运行原理
    flutter 打包apk
    Fluwx:微信SDK在Flutter上的实现
    flutter 购物车功能
    flutter sharesdk实现跨平台分享
    Web API接口设计经验总结
  • 原文地址:https://www.cnblogs.com/boolean/p/2262905.html
Copyright © 2011-2022 走看看