【发布时间】:2009-07-02 00:46:18
【问题描述】:
如何创建单例 asmx 网络服务? (请不要说使用 WCF 和 WWF :D)
【问题讨论】:
标签: asp.net web-services asmx
如何创建单例 asmx 网络服务? (请不要说使用 WCF 和 WWF :D)
【问题讨论】:
标签: asp.net web-services asmx
简短的回答:你不想。
长答案:对 .ASMX 的请求将不确定地使用新的工作线程,因此即使您使用单例模式,也不会知道单例的生命周期。
也许详细说明你想做什么,我可以指导你找到最好的模式。
【讨论】:
我不确定单例如何解决您的性能问题,除非您在实例中缓存数据。在这种情况下,我同意上述在服务和数据库之间引入缓存的建议。这些数据的可变性如何?
【讨论】:
我不会建议 WCF,但这只是因为你很好地要求我们不要这样做。
我会提到您找到了另一个使用 WCF 而不是 ASMX 的理由。您可能需要保留一份清单。
您可能还希望保留使用 ASMX over WCF 的原因列表。出于不升级到 .NET 3.5 SP1 的原因,您甚至可能想要使用相同的列表。这不会是一个很长的列表。
也许有一天,当管理层想知道为什么某些事情需要这么长时间才能完成时,你会想把你的清单发给他们。
【讨论】:
您可以使用 ashx (HttpHandler)。实现 IHttpHandler 并将 IsReusable 设置为 false。
http://neilkilbride.blogspot.com/2008/01/ihttphandler-isreusable-property.html
【讨论】:
根据您想要做什么,也许您可以将引擎编写为一个单例,任何线程都可以访问它,该线程服务于 ASMX 调用。
【讨论】: