Синглтон против статики: передовая практика объявления клиента веб-сервиса - PullRequest
1 голос
/ 19 августа 2011

У меня есть 2 веб-службы типа ASMX.В настоящее время он объявлен в App.cs как статический.Я думаю, в чем разница между статическим и одноэлементным экземпляром объявления клиента веб-службы.

В статическом режиме все, что мне нужно сделать, - это создать эту переменную

static PreferencesWSSoapClient _preferenceWS;

и свойство

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

    }

В синглтоне мне нужно создать синглтон-класс.

Вопрос в том, в чем разница между статическим и одноэлементным экземпляром объявления клиента веб-службы?

Какова наилучшая практика объявления клиента веб-службы?

1 Ответ

0 голосов
/ 25 августа 2011

Безопаснее создавать новый объект клиента для каждого запроса.Не только потому, что статический экземпляр веб-клиента, имеющий время жизни, равное приложению, сам по себе является уровнем :) Позвольте мне немного обосновать свои мысли.

Если вы используете клиент веб-службы в Silverlight, это означает, что вам придетсяиспользуйте его только в асинхронном режиме.Это потребует использования обработчиков событий для получения результатов.И было бы намного проще совершить ошибку при присоединении к событию, если у вас есть только один экземпляр клиента в приложении (я имею в виду, что несколько назначений одного и того же слушателя могут стать вполне возможными и часто возникающими). ​​

...