关于ASP.Net,WCF,App。域,实例,流程,应用程序。池,w3wp.exe

时间:2010-12-12 23:28:50

标签: asp.net wcf iis-7 w3wp.exe

情况: 我有一个调用WCF服务的网站,我正在努力理解它..

问题: 考虑我有一个ASP.Net(IIS7托管)网站如何关联AppDomain,W3Wp.exe进程,实例,App.Pool。&如何将WCF服务与(AppDomain,Instance,App.Pool)与WAS服务器& Windows服务..当多个请求发送到asp.net网站&网站调用WCF ..它会相互关联吗?我有点困惑...... 如果可能的话,你们中的任何人都可以用图表来联系它......

非常感谢您的回复

1 个答案:

答案 0 :(得分:3)

您需要了解或不理解的是什么?

  • W3Wp.exe是IIS用于在
  • 中运行AppPool的过程
  • AppPool是一个IIS概念,在.Net中不存在
    • 每个网站应用程序都在自己的AppDomain中运行
    • AppPools在同一个进程中运行多个网站应用程序
  • AppDomain是一个.Net概念,它涉及代码在应用程序内部执行的方式,建立边界等。
    • 来自MSDN:表示应用程序域,它是应用程序执行的隔离环境。
    • 您可以在同一进程中拥有多个AppDomain,但AppDomains无法在不同的进程中生存。
    • 一个AppDomain中的代码可以创建新的AppDomains
    • 您可以通过Remoting跨AppDomain边界进行通信
      • 在同一进程中,在另一个进程中甚至在远程计算机上与另一个AppDomain进行通信的技术是相同的。

.Net中的所有代码都必须在AppDomain中执行。如果您在ASP.Net应用程序中托管WCF服务,则WCF服务将在与ASP.Net应用程序相同的AppDomain中运行(请参阅WCF和ASP.Net http://msdn.microsoft.com/en-us/library/aa702682.aspx)。在该上下文中,AppDomain将在IIS内部的AppPool中运行,但该主机与.Net无关。

如果您在Windows服务中托管WCF服务,WCF服务将在Windows服务创建的AppDomain内运行,此处不涉及AppPools。

如果您的执行路径是

  1. 客户端请求在IIS上托管的asp.net网页
  2. 网页请求在Windows服务中托管的WCF服务
  3. 然后会有1个AppPool,1个W3Wp.exe进程,1个Windows服务进程和2个AppDomain。

    我不知道您的问题是否与WCF service Appdomain details有任何关系?