【发布时间】:2010-09-10 23:30:13
【问题描述】:
当客户端发出 Web 服务请求时,asp.net 如何分配服务类的实例来处理该请求?
是否为每个请求创建了服务类的新实例,或者是否正在发生池化,或者是否有用于处理所有请求的单例实例?
【问题讨论】:
-
您指的是 .NET 2.0 ASMX Web 服务还是 .NET 3.0 WCF 服务?
标签: asp.net web-services
当客户端发出 Web 服务请求时,asp.net 如何分配服务类的实例来处理该请求?
是否为每个请求创建了服务类的新实例,或者是否正在发生池化,或者是否有用于处理所有请求的单例实例?
【问题讨论】:
标签: asp.net web-services
对于经典的 ASMX 服务,您肯定会在每个请求中获得一个新实例,就像 ASPX 请求一样。对于 WCF 服务 (.SVC),您确实有更多选择,例如作为单例运行。
如果您对使用单例和池化工作感兴趣,您可以使用 ASMX 服务作为轻量级代理来来回传递参数。您的服务实现可能是与您网站的应用程序池一起存在的单例。您需要考虑偶尔重置的应用程序池,因为这就是 IIS 管理 ASP.NET 站点的方式。
您还可以使用始终运行的 WCF 服务运行 Windows 服务。该服务将在只能从同一台机器访问的端点上侦听 localhost。然后,您可以让 ASMX 服务在本地调用 WCF 服务。这将允许您始终确保您的状态只要您愿意,即使在 IIS 重新启动应用程序池时也是如此。当然,如果您希望允许多个 Web 服务使用同一服务主机以提高资源使用率,您也可以更改 WCF Windows 服务的安全性以允许使用密码进行远程访问。
【讨论】: