让你的程序动起来——支持动态更新或者热插拔

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

改进主要涉及两个方面:

1.程序集的加载

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

2.监视模块更新变化

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值