【问题标题】:Confusing terminologies pertaining to Application Pool, Worker Process and Application Domain与应用程序池、工作进程和应用程序域有关的令人困惑的术语
【发布时间】:2011-07-11 20:31:55
【问题描述】:

编辑 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

图片 2

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

问题:

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

【问题讨论】:

    标签: asp.net iis


    【解决方案1】:

    Application domain 又名AppDomain(它的类表示)是.NET 运行时内的封装环境,程序集在其中加载和运行。

    通常每个托管进程有一个 AppDomain/Application 域,但也可以更多。这里文章指的是同一个w3wp3.exe进程中的2个AppDomains。

    您可以使用 perfmon.exe 查看任何进程中加载​​的 AppDomain 数量

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

    更新

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

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

    【讨论】:

      猜你喜欢
      • 2021-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-23
      • 2014-11-21
      相关资源
      最近更新 更多