Dispatcher / Proxy (Client) Расширения для лучшей пропускной способности службы WCF - PullRequest
0 голосов
/ 30 марта 2012

Нужно мнение эксперта по этому конкретному исследованию.

Постановка проблемы / сценарий: Мой клиент / прокси WCF постоянно требует некоторых данных блокировки от соответствующей службы WCF. Точнее, у меня есть служба WCF, которая предоставляет данные о местоположении (город / страна и т. Д.) Из базы данных (хотя данные кэшируются в службе). Как-то, как я хочу избежать Serialization / DeSerialization (Object содержит много связанных свойств, а также внутренних объектов) затрат и выполнения операций сервиса для лучшей пропускной способности.

Несколько дней назад я изучал поведение WCF / методы расширения WCF. Я нашел интересную статью о MSDN (http://msdn.microsoft.com/en-us/magazine/cc163302.aspx). После прочтения этой статьи я подумал, что это может помочь мне улучшить производительность моего сервиса. Поэтому, прежде чем приступить к реализации этого, я хочу подтвердите, что либо я думаю в правильном направлении, либо любое другое решение может решить мою проблему.

Я собираюсь реализовать Dispatcher Extensions для решения этой проблемы вместо Proxy (Client) Extensions. У меня есть следующие запросы?

I) Где (уровень прокси / службы) мне нужно реализовать расширения? II) При реализации Dispatcher Extensions мой звонок не будет отправлен на реальный сервис, и я сэкономлю затраты на сериализацию / десериализацию. Правильно Неправильно? III) Реализация Dispatcher Extensions в моем случае также лучше, потому что почему бы не беспокоиться о том, какой вызов метода интерфейса прокси произошел, поскольку логика кэширования находится на стороне службы. Правильно / неправильно?

Пожалуйста, предложите мне лучшее решение, так как я хочу сэкономить затраты на сериализацию / десериализацию, а также реализовать кэширование данных.

Заранее спасибо / Ризван

1 Ответ

0 голосов
/ 30 марта 2012

В прошлом я использовал кеширование WCF двумя способами:

  1. Использование Castle DynamicProxy для генерации прокси для моих интерфейсов ServiceContract. Эти динамические прокси используют перехватчики для выполнения кэширования. Если данные не находятся в кэше, перехватчик создает реального клиента WCF (a ChannelFactory<TInterface>) и вызывает операцию WCF, а затем кэширует результат. Мне нравится этот подход, потому что реализация кэширования на самом деле не зависит от WCF.

  2. Реализация IRealProxy для WCF, которая обертывает фактические удаленные операции и выполняет кэширование / извлечение по мере необходимости. В принципе, это похоже на подход 1, но реализация специфична для WCF (с остатками .NET Remoting). Я использовал этот подход до перехода на # 1. Я перешел на подход 1, потому что подход 1 позволил мне выполнять кэширование как на клиенте, так и на сервере независимо от реализации. В то время я развернул свой собственный RealProxy, но похоже, что кто-то другой сделал то же самое и опубликовал код: http://blog.ngommans.ca/index.php?/archives/31-Custom-Proxy-Generation-using-RealProxy.html

...