当前位置:  开发笔记 > 后端 > 正文

在不停止服务的情况下更新dll

如何解决《在不停止服务的情况下更新dll》经验,为你挑选了1个好方法。

我想在不停止服务的情况下更新服务器进程的dll.我怎么做?有点像asp.net如何自动获取放在bin文件夹中的新dll.



1> Gulzar Nazim..:

Asp.Net使用一种称为卷影副本的技术

如果将更新的dll复制到应用程序的bin子目录中,ASP.NET运行时会识别出要执行的新代码.由于ASP.NET无法将dll交换到现有的AppDomain,因此它启动了一个新的AppDomain.旧的应用程序域是"排出停止",即允许现有请求完成执行,一旦完成它们,AppDomain就可以卸载.新的AppDomain以新代码开始,并开始接受所有新请求.

通常,当dll加载到进程中时,进程会锁定dll,并且您无法覆盖磁盘上的文件.但是,AppDomains具有称为卷影复制的功能,允许程序集在磁盘上保持解锁和可替换状态.

运行时使用为bin目录启用的Shadow Copy初始化ASP.NET.在锁定并将dll加载到内存之前,AppDomain会将所需的任何dll从bin目录复制到临时位置.Shadow Copy允许我们在更新期间覆盖bin目录中的任何dll,而无需使Web应用程序脱机.

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有