#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. В частности, это приводит к «утечке» результатов между пользователями в веб-проекте, поскольку кэш используется для каждого приложения. И разумное формирование ключа кэша перед лицом произвольных параметров произвольных типов — непростая задача.