2011-12-13 183 views
18

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

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

请用简单的描述来阐述它。

谢谢

+1

http://weblogs.asp.net/owscott/archive/2007/09/02/application-vs-appdomain.aspx – Prisoner

+0

http://social.msdn.microsoft.com/Forums/en/ clr/thread/fd865e35-a2ee-41b8-b112-5913f15c96f2 – Prisoner

+1

http://forums.asp.net/t/1688586.aspx/1 – Prisoner

回答

26

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

AppTest1和AppTest2在不同的AppDomain中,但在 中的过程相同。

使用它们有什么用?

应用程序池和AppDomain,它们都可以提供 隔离,但使用不同的方法。应用程序池 使用该过程来隔离不使用.NET的情况下运行 的应用程序。但是AppDomain是.NET提供的另一种隔离方法 。 如果您的服务器托管成千上万的网站,您将不会使用 成千上万的应用程序池来隔离网站, 仅仅是因为运行过多的进程会终止该操作系统。 但是,有时您需要应用程序池。应用程序池的 优势之一是,您可以为应用程序池配置 标识。你也有更灵活的 选项来回收应用程序池。至少现在, IIS没有提供显式选项来回收appdomain。

应用程序池是一组一个或多个网址为 的不同Web应用程序和网站。可以将任何Web目录 或虚拟目录分配给应用程序池。 一个应用程序池的股票中的每个应用程序相同的 工作进程可执行文件,程序w3wp.exe,那 服务一个应用程序池从工人 过程中分离的工作进程服务的其他[如启动MS Word和 开放许多Word文档] 。每个单独的工作进程 提供了一个进程边界,以便当应用程序分配给一个应用程序池的 时,其他 应用程序池中的问题不会影响应用程序。此 可确保如果工作进程失败,则不会影响在其他应用程序池中运行的应用程序 。如 例如,如果Word文档有问题,它不应该 逻辑上影响您的Excel表格是不是。 应用程序域是一种机制(类似于操作系统中的进程),用于将执行的应用程序相互隔离,使得它们彼此不影响 。即MS WORD的打开不会影响MS EXCEL 您可以随时打开和关闭这两个应用程序,因为 应用程序之间没有依赖关系。每个 应用程序域都有其自己的虚拟地址空间,其中 使用该地址空间来为应用程序域范围。

由于this链接

+0

“应用程序池使用该进程来隔离没有工作的应用程序为了清楚起见,.NET应该以“带有或不带有.NET”结尾。此外,应用程序池可以有多个工作进程(web garden)。尽管这不是一个推荐的方法,但您的答案反映了它的存在。 –

+0

请您澄清单个应用程序池可以托管各种应用程序的场景吗?这可能是因为应用程序是.Net应用程序,因此在单个应用程序池过程中支持应用程序域级隔离? – Sumith

-1

以简单的方式

  • 应用程序池是为每一个网站的创建。

  • 涉及一个应用程序域目的的应用程序域。

+1

我还没有模糊的想法,你的第二点要说的是什么。 –

相关问题