Singleton与Static:Web服务客户端声明的最佳实践

时间:2011-08-19 03:02:32

标签: silverlight-4.0 static singleton asmx webservice-client

我有2个ASMX类型的Web服务。它目前在App.cs中声明为static。 我在想什么是Web服务客户端声明的静态和单例实例之间的区别。

在静态中,我需要做的就是创建这个变量

static PreferencesWSSoapClient _preferenceWS;

和属性

public static PreferencesWSSoapClient PreferenceWS
    {
        get 
        {
            if (_preferenceWS == null)
            {
                _preferenceWS = new PreferencesWSSoapClient("PreferencesWSSoap", PrefUri.ToString());
            }
            return _preferenceWS; 
        }

    }

在单身人士中,我需要创建一个单例类。

问题是什么是Web服务客户端声明的静态和单例实例之间的区别?

Web服务客户端声明的最佳做法是什么?

1 个答案:

答案 0 :(得分:0)

为每个请求创建一个新的客户端对象更安全。不仅仅是因为一个生命周期等于应用程序的静态webclient实例本身就是一个evel :)让我来证实一下我的想法。

如果您在Silverlight中使用Web服务客户端,则意味着您只能在异步模式下使用它。它需要使用eventhandler来获得结果。如果你在应用程序中只有一个客户端实例,那么使事件附加错误变得相当容易(我的意思是这里同一个监听器的多个赋值可能变得非常可能并且经常发出)。