22

应用程序域和应用程序池有什么区别?

我已经阅读了很多关于这两个术语的文章。但仍然无法正确理解它们。

请用简单的描述详细说明。

谢谢

4

1 回答 1

31

IIS进程是w3wp;IIS 中的每个应用程序池都使用自己的进程;AppPool1 使用进程 3784,AppPool2 使用进程 5044 Asp.net 中不同的应用程序会使用不同的 AppDomain;

AppTest1 和 AppTest2 在不同的 AppDomain 中,但在同一个进程中。

使用它们有什么意义?

应用程序池和 AppDomain ,它们都可以提供隔离,但使用不同的方法。应用程序池使用该进程来隔离在没有 .NET 的情况下工作的应用程序。但AppDomain 是.NET 提供的另一种隔离方法。如果您的服务器托管了数千个网站,您将不会使用数千个应用程序池来隔离网站,因为运行的进程过多会杀死操作系统。但是,有时您需要应用程序池。应用程序池的优点之一是您可以为应用程序池配置身份。此外,您还有更灵活的选项来回收应用程序池。至少现在,IIS 没有提供明确的选项来回收 appdomain。

应用程序池是一组不同 Web 应用程序和网站的一个或多个 URL。任何 Web 目录或虚拟目录都可以分配给应用程序池。应用程序池中的每个应用程序共享相同的工作进程可执行文件 W3wp.exe,服务一个应用程序池的工作进程与服务另一个应用程序池的工作进程是分开的[就像启动 MS Word 并打开许多 Word 文档]。每个单独的工作进程都提供了一个进程边界,因此当一个应用程序被分配到一个应用程序池时,其他应用程序池中的问题不会影响该应用程序。这确保了如果一个工作进程失败,它不会影响在其他应用程序池中运行的应用程序。[ie] 例如,如果 word 文档有问题,它不应该在逻辑上影响您的 Excel 工作表,不是吗。应用程序域是一种机制(类似于操作系统中的进程),用于将执行的软件应用程序彼此隔离,以便它们不会相互影响。[ie] 打开 MS WORD 不会影响 MS EXCEL 您可以随时打开和关闭这两个应用程序,因为应用程序之间没有依赖关系。每个应用程序域都有自己的虚拟地址空间,它使用该地址空间为应用程序域限定资源。

感谢这个链接

于 2011-12-13T09:47:50.763 回答