【问题标题】:How is a web service request handled in ASP.NetASP.Net 中如何处理 Web 服务请求
【发布时间】:2010-09-10 23:30:13
【问题描述】:

当客户端发出 Web 服务请求时,asp.net 如何分配服务类的实例来处理该请求?

是否为每个请求创建了服务类的新实例,或者是否正在发生池化,或者是否有用于处理所有请求的单例实例?

【问题讨论】:

  • 您指的是 .NET 2.0 ASMX Web 服务还是 .NET 3.0 WCF 服务?

标签: asp.net web-services


【解决方案1】:

对于经典的 ASMX 服务,您肯定会在每个请求中获得一个新实例,就像 ASPX 请求一样。对于 WCF 服务 (.SVC),您确实有更多选择,例如作为单例运行。

如果您对使用单例和池化工作感兴趣,您可以使用 ASMX 服务作为轻量级代理来来回传递参数。您的服务实现可能是与您网站的应用程序池一起存在的单例。您需要考虑偶尔重置的应用程序池,因为这就是 IIS 管理 ASP.NET 站点的方式。

您还可以使用始终运行的 WCF 服务运行 Windows 服务。该服务将在只能从同一台机器访问的端点上侦听 localhost。然后,您可以让 ASMX 服务在本地调用 WCF 服务。这将允许您始终确保您的状态只要您愿意,即使在 IIS 重新启动应用程序池时也是如此。当然,如果您希望允许多个 Web 服务使用同一服务主机以提高资源使用率,您也可以更改 WCF Windows 服务的安全性以允许使用密码进行远程访问。

【讨论】:

    猜你喜欢
    • 2013-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-25
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多