当前位置:  开发笔记 > 编程语言 > 正文

我是否需要在ASP.NET中部署Web服务引用?

如何解决《我是否需要在ASP.NET中部署Web服务引用?》经验,为你挑选了1个好方法。

垃圾收集器是否清理了Web服务引用,或者在调完我调用的任何方法后,是否需要在服务引用上调用dispose?



1> Dan Herbert..:

您可以使用单例模式仅保留每个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;
        }
    }
}

然后,当您需要访问Web服务时,您可以执行以下操作:

WS.MyWebServiceInstance.MyMethod(...)

要么

var ws = WS.MyWebServiceInstance;
ws.MyMethod(...)

我已经在几个项目中成功使用了这种模式并且运行良好,但正如tvanfosson在下面的评论中提到的,更好的策略是使用DI框架来管理您的Web服务实例.

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有