Предложения по замене для EntLib PolicyInjection

#caching #enterprise-library #code-injection #appfabric #policy

#кэширование #корпоративная библиотека #внедрение кода #appfabric #политика

Вопрос:

В настоящее время мы используем внедрение политики корпоративной библиотеки для кэширования в нашем репозитории доступа к данным, например

общедоступный интерфейс IClientStatusRepository { [CachingCallHandler(24, 0, 0)] Я получаю список GetAll(); }

var clientStatusRepository = PolicyInjection.Перенос (новый ClientStatusRepository());

Это хорошо работает для нас, потому что оно декларативное и не содержит абсолютно никаких файлов конфигурации. Он также скрыт за нашим собственным шаблоном factory, поэтому его легко заменить.

Мы начали искать альтернативные решения. Основная причина рассмотрения альтернативных вариантов заключается в том, что мы поняли, что нам нужно изменить способ истечения срока действия содержимого из asp.net кэширование. Кроме того, мы хотим ввести распределенный кэш (MemCached или AppFabric) и хотим иметь возможность декларативно удалять объекты из кэша

Кто-нибудь может предложить некоторые альтернативы, которые они идеально использовали с распределенным кэшем. Если решение требует конфигурации для каждого класса, оно будет автоматически исключено. Аспекты должны быть декларативными в коде.

Спасибо

Крейг

Ответ №1:

Написание обработчиков вызовов довольно простое. В качестве примера у вас также есть источник обработчика кэширующего вызова. Напишите пользовательский обработчик вызовов, который вызывает систему кэша, которую вы хотели бы использовать.

Имейте в виду, что такое поведение кэширования сложнее, чем кажется, и обработчик Entlib допустил достаточно ошибок, поэтому мы вытащили его, а не пытались исправить для Entlib 5. В частности, это приводит к «утечке» результатов между пользователями в веб-проекте, поскольку кэш используется для каждого приложения. И разумное формирование ключа кэша перед лицом произвольных параметров произвольных типов — непростая задача.