1

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

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

非常感谢您的回复

4

1 回答 1

3

您需要了解或不了解的具体内容是什么?

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

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

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

如果您的执行路径是

  1. 客户端请求托管在 IIS 上的 asp.net 网页
  2. 网页请求托管在 Windows 服务中的 WCF 服务

那么将有 1 个 AppPool、1 个 W3Wp.exe 进程、1 个 Windows 服务进程和 2 个 AppDomains 参与。

我不知道您的问题是否与WCF 服务 Appdomain 详细信息有任何关系?

于 2010-12-12T23:54:45.260 回答