Bea*_*roj 10 c# asp.net dispose web-services
垃圾收集器是否清理了Web服务引用,或者在调完我调用的任何方法后,是否需要在服务引用上调用dispose?
Dan*_*ert 23
您可以使用单例模式仅保留每个Web服务的单个实例,而不必担心处理Web服务.Web服务是无状态的,因此可以安全地在Web服务器上的连接和线程之间共享它们.
以下是可用于保存对Web服务实例的引用的Web Service类的示例.这个单例是懒惰和线程安全的.建议如果你使单身人员懒惰,他们也会遵循相同的逻辑保持线程安全.要了解有关如何执行此操作的更多信息,请阅读有关实现单例的C#In Depth文章.
另请注意,您可能会遇到WCF Web服务的问题.我建议阅读WCF的实例管理技术文章,特别是单例部分,以获取更多详细信息.
public static class WS
{
private static object sync = new object();
private static MyWebService _MyWebServiceInstance;
public static MyWebService MyWebServiceInstance
{
get
{
if (_MyWebServiceInstance == null)
{
lock (sync)
{
if (_MyWebServiceInstance == null)
{
_MyWebServiceInstance= new MyWebService();
}
}
}
return _MyWebServiceInstance;
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后,当您需要访问Web服务时,您可以执行以下操作:
WS.MyWebServiceInstance.MyMethod(...)
Run Code Online (Sandbox Code Playgroud)
要么
var ws = WS.MyWebServiceInstance;
ws.MyMethod(...)
Run Code Online (Sandbox Code Playgroud)
我已经在几个项目中成功使用了这种模式并且运行良好,但正如tvanfosson在下面的评论中提到的,更好的策略是使用DI框架来管理您的Web服务实例.
| 归档时间: |
|
| 查看次数: |
14576 次 |
| 最近记录: |