У меня есть настольное приложение, использующее службы WCF. У меня улучшилось удобство использования, когда я реализовал асинхронные вызовы WCF.Стратегия инициализации клиента клиента WCF
Мой вопрос: какова наилучшая практика для инициализации клиента обслуживания?
В предыдущей реализации существовал отдельный статический объект с учетными данными и общедоступный метод GetClient()
, который создавал new ServiceClient
перед каждым звонком. В приложении есть широко используется такая конструкция:
using (var svc = ServiceClientFactory.GetClient()) {
var data = svc.CallMethod(...);
some_application_context.specific_attribute = data;
}
так, перед любым вызовом, был создан новый клиент, который был уничтожен сразу после того, как операция была закончена, и получил использовали данные.
Мой вопрос: лучше ли вызывать клиентский конструктор перед каждым звонком?
Я попытался создать единый статический клиентский объект, который инициализируется один раз при запуске и один раз уничтожается при закрытии приложения, но у меня нет никакого заметного увеличения производительности.
Кажется, что все прекрасно работает, но мне интересно, есть ли какие-либо не очень очевидные препятствия при использовании одного клиента? А что рекомендуется?
'mService.State' - это были препятствия, я просил – obratim