应用程序池 (AppPool) 与应用程序域 (AppDomain) 的区别。






4.12/5 (9投票s)
AppPool 和 AppDomain 的区别
引言
应用程序池(又称 AppPool)和应用程序域(又称 AppDomain)是两个不同的实体,它们的功能大致相同,但作用于不同的层级,并且由不同的提供者提供。
关注点
- 应用程序域是 ASP.NET 的概念,为每个 ASP.NET 应用程序提供隔离。应用程序池是 IIS 的概念,也提供隔离,但作用于进程级别。
- 应用程序域仅适用于 ASP.NET 应用程序。应用程序池适用于 ASP.NET 和非 ASP.NET 应用程序。
- 每个 ASP.NET 应用程序都有自己的应用程序域。一个应用程序池可以被多个应用程序共享。
- 你对创建应用程序域的控制权有限。你可以使用 IIS 管理器配置应用程序池。
- 你可以编辑并保存 web.config 文件来重新创建应用程序域。你可以在 IIS 管理器中回收应用程序池。
下图将帮助你更好地理解每个应用程序如何使用应用程序池和应用程序域。
应用程序 A 和 B 都是 ASP.NET 应用程序,而应用程序 C 是非 ASP.NET 应用程序。所有 3 个应用程序都托管在 IIS (6.0 或更高版本) 中。应用程序 A 和 B 将拥有各自的应用程序域,而应用程序 C 由于不是 ASP.NET 应用程序,将不会拥有应用程序域。所有 3 个应用程序可以共享同一个应用程序池,但在下图中,我为应用程序 A 配置了一个名为 App-Pool-A 的应用程序池,为应用程序 B 和 C 配置了另一个名为 App-Pool-BC 的应用程序池。