我想知道Appdomain回收到底是什么? 当第一次从DotNet应用程序请求ASPX页面时,我知道该应用程序的appdomain已创建,所需的程序集将加载到该appdomain中,请求将得到服务. 现在,如果web.config文件或bin文件夹的内容等被修改,则appdomain将被"回收". 我的问题是,在回收过程结束时,appdomain是否会加载程序集并准备好服务于下一个请求?或者必须请求一个页面才能触发程序集加载?
我想知道Appdomain回收到底是什么? 当第一次从DotNet应用程序请求ASPX页面时,我知道该应用程序的appdomain已创建,所需的程序集将加载到该appdomain中,请求将得到服务. 现在,如果web.config文件或bin文件夹的内容等被修改,则appdomain将被"回收". 我的问题是,在回收过程结束时,appdomain是否会加载程序集并准备好服务于下一个请求?或者必须请求一个页面才能触发程序集加载?
嗯,我认为这条线索正在顺利地得出最终结论,但最终,情况并非如此.
我会根据自己的理解和我在其他网站上读到的内容来回答这个问题.
首先,我自己尽量避免使用除应用程序池之外的术语"回收",因为这可能会让人感到困惑.现在,转到Process、Pools和AppDomain,我看到的情况如下所示:
简而言之,应用程序池是由称为W3WP.exe的进程(也称为工作进程)维护并运行的内存区域.回收应用程序池意味着关闭该进程,将其从内存中删除,然后使用新分配的进程ID创建一个全新的工作进程.
关于应用程序域,我将其视为内存区域的子集,在上述扮演容器角色的区域内.换句话说,内存中的进程W3WP.在本例中,exe是用于存储子集区域(称为应用程序域)的应用程序的宏内存区域.话虽如此,内存中的一个进程可以存储不同的应用程序域,一个用于分配给在给定应用程序池中运行的每个应用程序.
说到回收,正如我最初所说的,这是我自己只为应用程序池保留的东西.对于AppDomains,我更喜欢使用术语"重启",以避免误解.基于此,重新启动AppDomain意味着使用新添加的设置重新启动给定的应用程序,例如刷新现有配置.这发生在内存子区域AppDomain的边界内,AppDomain最终位于与相应应用程序池关联的进程内.这些新设置可能来自以下文件:
网状物配置,
可能还有其他人.
AppDomain是相互隔离的,这完全有意义.如果不是这样,如果更改了web.config(比方说,更改了应用程序1的请求回收池),则分配给该池的所有其他应用程序都将重新启动,这绝对不是Microsoft和其他任何人所希望的.
总结一下我的观点,
n=分配给给定W3WP管理的应用程序池的应用程序数.exe
欲了解更多信息,我建议:
What causes an application pool in IIS to recycle?个
来自巴西的问候!