混淆与应用程序池,工作进程和应用程序域相关的术语

时间:2011-03-09 12:03:06

标签: asp.net iis

编辑1

我对下面的陈述感到困惑,该陈述取自What ASP.NET Programmers Should Know About Application Domains

  

您已经创建了两个ASP.NET   同一台服务器上的应用程序   没有做任何特别的事   组态。发生了什么事?

     

单个ASP.NET辅助进程将   托管两个ASP.NET应用程序。   在Windows XP和Windows 2000上   进程名为aspnet_wp.exe,并且   该过程在安全性下运行   本地ASPNET帐户的上下文。   在Windows 2003上,工作进程具有   名称w3wp.exe并在其下运行   默认情况下,NETWORK SERVICE帐户。

他说有一个工作进程产生2个应用程序域 - 每个asp.net应用程序有一个应用程序域。

但是当我看到正在运行的进程如下时,

图片1

enter image description here

图片2

enter image description here

w3wp.exe被称为IIS工作进程而不是应用程序池或应用程序域。

问题:

  1. 应用程序域是否等于应用程序池?
  2. 令人困惑的是图片1.为什么Host Process Windows Service svchost.exe会产生2 IIS Worker Process w3wp.exe?据我了解,一个进程只能包含应用程序域,而不能包含其他进程。

1 个答案:

答案 0 :(得分:2)

Application domain aka AppDomain(其类表示)是.NET运行时内的封装环境,其中装配和运行程序集。

通常每个托管流程都有一个AppDomain / Application域,但可以更多。这篇文章引用了同一个w3wp3.exe进程中的2个AppDomain。

您可以使用perfmon.exe

查看在任何进程中加载​​的AppDomain数量

要回答您的问题,通常每个AppPool会创建一个AppDomain。但是可以通过应用程序在AppPool中手动加载额外的AppDomain - 但这种情况非常罕见。

更新

我认为您正在使用Sysinternals的Process Explorer。忽略它在那里显示树结构的方式,它只说明哪个进程有生成其他进程。事实上,它显示了资源管理器下面的大多数进程,因为资源管理器已用于加载它。

此外,SVCHOST.exe是一个非托管可执行文件,虽然它可以托管CLR并加载AppDomains,但它通常不会这样做。

enter image description here

enter image description here