Клиент WCF: как оптимизировать служебные вызовы?

Я разрабатываю клиент WPF, который взаимодействует с веб-службой WCF, которая сохраняет данные в базе данных с помощью NHibernate.

Я понимаю, что могу добавить ссылку на службу своему клиенту, чтобы сгенерировать классы из метаданных веб-службы. Затем эти классы позволили бы мне взаимодействовать с моей Службой, просто создавая экземпляры объектов и вызывая методы, использующие их.

У меня вопрос:

Должен ли я просто использовать эти объекты как есть, или есть какие-либо возможные улучшения, «обернув» вызовы службы в класс, который обрабатывает все взаимодействия с веб-службой?

Другими словами, будет ли создание прокси-сервера в моем клиенте каждый раз, когда я хочу взаимодействовать с моей службой, дорого с точки зрения производительности? Если да, нужно ли мне создавать класс, который «обертывает» сгенерированные классы и удерживает канал?

Какие улучшения вы можете порекомендовать помимо простого создания прокси-сервера и его использования для взаимодействия с Сервисом?

Спасибо


person Hussein Khalil    schedule 30.08.2011    source источник


Ответы (1)


Позвольте мне направить вас к эта статья, в которой рассказывается о кэшировании каналов в клиентском прокси.

person Jesse C. Slicer    schedule 30.08.2011
comment
Спасибо, Джесси, я посмотрю статью. Возможно, это именно то, что мне нужно. - person Hussein Khalil; 30.08.2011
comment
Вам также следует изучить этот вопрос и ответы на предложения о том, как WCF реализует шаблон Dispose для унаследованных от ClientBase прокси. Если вы пишете собственную оболочку для сгенерированных прокси, вам нужно это учитывать. - person Sixto Saez; 30.08.2011
comment
Вау, Сиксто, это заставило меня задуматься, спасибо! Кстати, я тоже хотел создать свой собственный ответ на этот вопрос: stackoverflow.com/questions/573872/ - person Jesse C. Slicer; 30.08.2011
comment
Прочитав ссылку Джесси и просмотрев веб-страницы, я понял, что, начиная с .NET 3.5, Channel Factory автоматически кэшируется для вас (большую часть времени), если вы используете автоматически сгенерированные прокси SVCUTIL. Условия подробно описаны в статье. Что касается ссылки Sixto, вы можете найти решение проблемы Dispose здесь (для Visual Studio 2010): wcfproxygenerator.codeplex.com/SourceControl/list/patches. Эта надстройка заменит инструмент создания прокси-сервера Visual Studio Service Reference на тот, который генерирует прокси-серверы, которые правильно обрабатывают исключения. Короче обертка не нужна. :) - person Hussein Khalil; 31.08.2011