Безопасно ли использовать прокси-классы .NET Web Service в качестве синглетонов? - PullRequest
1 голос
/ 27 мая 2010

Я использую сгенерированный прокси-класс Visual Studio для связи с веб-службой SOAP. Сгенерированный класс является производным от System.Web.Services.Protocols.SoapHttpClientProtocol. Я считаю, что создание экземпляра класса дорого, поэтому я рассматриваю возможность изменения метода фабрики, чтобы он возвращал экземпляр класса Singleton. Согласно документации , класс безопасен для многопоточности.

Есть ли у кого-нибудь опыт повторного использования экземпляров этих классов? Есть ли в этом какие-либо недостатки (то есть соединения остаются открытыми и т. Д.)?

.NET Framework Версия: 2.0

Ответы [ 2 ]

0 голосов
/ 08 апреля 2011

Я могу представить несколько причин создания единственного экземпляра прокси-сервера, кроме накладных расходов, что, я согласен, не очень много. Самой большой причиной было бы поддерживать сеанс между вызовами службы. Представьте себе приложение с несколькими страницами, каждая из которых использует одни и те же методы веб-службы. Сеанс для вызовов веб-службы обычно выполняется путем установки параметра cookie на прокси:

proxy.CookieContainer = new System.Net.CookieContainer();

Если вы создаете новый прокси для каждой операции страницы, сеанс будет потерян от страницы к странице. Создание одноэлементного прокси, используемого всеми страницами, решит эту проблему.

0 голосов
/ 28 мая 2010

Не должно быть никаких причин, по которым использование этих классов в одноэлементном шаблоне должно вызывать проблемы, однако я пытаюсь понять, какую проблему вы пытаетесь решить. Когда вы говорите, что эти классы дорогие для создания экземпляров, с чем вы их сравниваете? Стоимость создания прокси-класса должна быть незначительной по сравнению со стоимостью выполнения http-запроса к веб-службе. Не могли бы вы объяснить обстоятельства / опубликовать некоторый код, который демонстрирует, что ваша производительность связана с созданием прокси-классов.

...