zoukankan      html  css  js  c++  java
  • 如何避免由于更新web应用下的bin的dll文件导致web应用重启(留存)

     .net web应用有个很不好的特性,即IIS会监控应用下的文件夹和文件,如果更新了web应用的bin下的dll(新增文件,删除文件,更新文件)、修改了web.config文件,都会导致web应用重新启动,这对经常使用的系统来讲不是很好。如何避免呢,以下是个思路共大家参考,希望有志之士来实验并实现它。

     1,既然web应用监控 bin,那么我们不把我们的dll放在bin下,bin下只放网站自己的dll。

     2,不放在bin下,就要解决程序集加载的问题

     3,我们的程序集大多是动态加载的,可以在这里入手

     4,需要考虑的地方

         - 找到所有动态加载程序集的地方,现在知道的地方, panfis.dll 中的 ClientRequestHandler类,

           工作流页面 panflow.aspx的后台代码 ;pansoft,.dll中的classfactory 类

           其他的可以通过查找 Load 关键字来查找。

         - 考虑使用不同的加载方式 Load,LoadFrom 和 LoadFile,这都是Assembly 类的静态方法,这3中方式略有差别,主要体现在,对dll的寻找路径,是否加载依赖的程序集,是否对同名的程序集重复加载,加载时,不同的load方法如何查找依赖的程序集。 这些差别都会影响到具体的实现。

         -还要考虑 .net 是否缓存了程序集,我们的程序是否缓存了程序集。如果缓存了,怎么保证更新后,立即生效。(classfactory类和ClientRequestHandler缓存了类型和类型实例)。

         - 还要实验在应用运行期间能否覆盖dll(也许会被应用锁定,不让更新),如果是的话,如何解决。

    大家可以课下研究,不仅仅对提高自己,能更深刻了解.net的底层运行机制有,如果能实现,对项目也是个很大的贡献。

  • 相关阅读:
    jquery中子元素和后代元素的区别
    MVC4 创建控制器时,无法检索元数据
    ref和out的用法说明举例(转)
    DataView的ToTable方法,类似数据库Distinct。
    oracle 19C 静默安装(单机版)
    Supervisord进程管家
    zabbix v3.0安装部署【转】
    Linux下Hadoop2.7.3集群环境的搭建
    Redis集群搭建与简单使用【转】
    redis+keepalived实现高可用
  • 原文地址:https://www.cnblogs.com/senline/p/2680879.html
Copyright © 2011-2022 走看看