如何在ASP.Net中处理Web服务请求
时间:2020-03-06 14:23:44 来源:igfitidea点击:
当客户端发出Web服务请求时,asp.net如何分配服务类的实例来处理该请求?
是否为每个请求创建了服务类的新实例,或者是否正在发生池化,或者是否存在用于处理所有请求的单例实例?
解决方案
对于经典的ASMX服务,我们肯定会在每个请求中获得一个新实例,就像ASPX请求一样。对于WCF服务(.SVC),我们确实有更多选择,例如作为单例运行。
如果我们对使用单例和池感兴趣,则可以将ASMX服务简单地用作轻量级代理来回传递参数。我们对服务的实现可能与网站的应用程序池一起存在。我们将需要考虑偶尔重置的应用程序池,因为这就是IIS管理ASP.NET站点的方式。
我们还可以做的是使用始终运行的WCF服务运行Windows服务。该服务将侦听只能从同一计算机访问的端点上的localhost。然后,我们可以在本地对WCF服务进行ASMX服务调用。这样,即使IIS重新启动应用程序池,只要我们愿意,就可以始终确保其状态有效。当然,如果要允许多个Web服务使用同一服务主机以提高资源使用率,也可以更改WCF Windows服务的安全性,以允许使用密码进行远程访问。