应用程序域和应用程序池之间的区别?

问题描述 投票:0回答:1

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

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

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

谢谢

asp.net application-pool applicationdomain
1个回答
33
投票

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

AppTest1 和 AppTest2 位于不同的 AppDomain 中,但位于 同样的过程。

使用它们有什么意义?

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

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

感谢这个链接。

© www.soinside.com 2019 - 2024. All rights reserved.