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

Ami*_*oni 22 asp.net application-pool applicationdomain

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

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

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

谢谢

Ami*_*oni 30

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

AppTest1和AppTest2位于不同的AppDomain中,但是在同一个进程中.

使用它们有什么意义?

应用程序池和AppDomain,它们都可以提供隔离,但使用不同的方法.应用程序池使用该过程隔离无.NET的应用程序.但是AppDomain是.NET提供的另一种隔离方法.如果您的服务器托管了数千个网站,那么您将不会使用数千个应用程序池来隔离网站,因为运行的进程太多会终止操作系统.但是,有时您需要应用程序池.应用程序池的一个优点是您可以为应用程序池配置标识.您还可以使用更灵活的选项来回收应用程序池.至少目前,IIS没有提供回收appdomain的明确选项.

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

感谢这个链接