Как реализовать пользовательское wcf-кэширование на стороне клиента - PullRequest
0 голосов
/ 22 сентября 2010

Мне нужно реализовать пользовательское кэширование клиентского прокси сервиса wcf. Я реализовал интерфейс IOperationBehavior. На стороне сервера мы можем установить свойство OperationDescription.Invoke в методе ApplyDispatchBehavior и реализовать интерфейс IOperationInvoker для управления выполнением операции. На стороне клиента мы не можем этого сделать.

На стороне клиента мы можем использовать интерфейсы IClientMessageInspector, IParameterInspector, IClientMessageFormatter для управления потоком сообщений. Основная проблема заключается в том, что я должен хранить в кэше только ответ службы без информации о формате сообщения. Когда я восстанавливаю значения из кеша, я должен снова создать сообщение, как в случае ответа службы. Я не могу прервать следующую внутреннюю обработку сообщений. Поэтому в этот момент я теряю необходимую информацию о сообщении, такую ​​как кодировка, тип контента (json, xml) в случае RESTful-сервисов. Конечный результат - WCF не может обработать такое сообщение. Я хочу отключить обработку сообщений, если существует кэшированное значение. Как я могу это сделать?

1 Ответ

0 голосов
/ 22 сентября 2010

Я бы выбрал совершенно другой подход.Вместо того, чтобы вводить некоторые функции в конвейер WCF, я бы определил интерфейс для прокси WCF, завернул прокси WCF в пользовательский класс (прокси-сервер кэширования) и реализовал интерфейс для этого класса-оболочки.Тогда вызов WCF будет выполняться только в том случае, если прокси-сервер кэширования не содержит требуемых данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...