C # Использование кэширования зависимости кеша - PullRequest
2 голосов
/ 05 января 2010

Я пытаюсь реализовать кэширование в веб-приложении. Кэширование должно быть сделано в BLL.

Подпись метода BLL составляет

public static List<Ailias> Select(List<Filter> filters) 

и в данный момент просто вызывает соответствующий метод в DAL.

Проблема, с которой я сталкиваюсь, заключается в том, что моя зависимость от кэша будет объектом фильтров; всякий раз, когда объект фильтров отличается, должен быть сделан новый вызов DAL.

Как мне добавить эту зависимость, все, что я могу найти в документации, это зависимость от файла?

Ответы [ 2 ]

0 голосов
/ 05 января 2010

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

"... всякий раз, когда объект фильтров отличается ..."

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

Рассмотрите возможность реализации уникального хеш-ключа в коллекции List и сохраните два элемента в вашем кэше - ключ кэша из вашего фильтра со статическим именем, например, «list-alias-filter-key», и коллекцию List. 1007 *

Когда вы делаете последующие вызовы метода, сравните уникальный хэш-ключ List (ключ кеша) с ключом в "list-alias-filter-key". Если они одинаковы, вы знаете, что можете безопасно извлечь кэшированное значение для List. Если они различаются, запросите с помощью новой коллекции List и сбросьте два значения в кеше.

0 голосов
/ 05 января 2010

Существует, AFAIK, два предопределенных CacheDependancies (File и Sql), однако ничто не мешает вам реализовать свой собственный CacheDependancy, как описано в этой ссылке

...