当客户端发出Web服务请求时,asp.net如何分配服务类的实例来处理该请求?
是否为每个请求创建了一个新的服务类实例,或者是否存在池,或者是否存在用于处理所有请求的单例实例?
答案 0 :(得分:1)
对于经典ASMX服务,您肯定会获得每个请求的新实例,就像ASPX请求一样。对于WCF服务(.SVC),您有更多选项,例如以单例形式运行。
如果您对使用单例和池进行操作感兴趣,可以使用ASMX服务作为轻量级代理来回传递参数。您的服务实现可能是与您的网站的应用程序池一起使用的单例。您需要考虑偶尔重置的应用程序池,因为这是IIS管理ASP.NET站点的方式。
您还可以使用始终运行的WCF服务运行Windows服务。此服务将侦听仅可从同一台计算机访问的端点上的localhost。然后,您可以在本地对ASFX服务进行WCF服务调用。这样,即使IIS重新启动App Pool,您也可以始终确保您的状态处于活动状态。当然,如果您希望允许多个Web服务使用同一服务主机以改善资源使用,您还可以更改WCF Windows服务的安全性以允许使用密码远程访问。