.net Artchitecture, которая работает как - кэшировать все, читать из кэша - PullRequest
0 голосов
/ 12 июня 2010

Привет. Мне нужен пример, который выполняет следующие действия: База данных <-> Доступ к данным + Кэш <-> Бизнес-логика <-> Интерфейс пользователя

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

, есть ли какой-либо недостаток?в каких сценариях это может быть хорошим решением

Ответы [ 2 ]

0 голосов
/ 12 июня 2010

Мне нравится создавать свой собственный класс статической оболочки для класса System.Web.Caching.Cache .

По сути, вы создаете класс в модуле веб-приложения и создаете все стандартные функции кэширования (получение, добавление, удаление и т. Д.). Методы должны быть реализованы с использованием обобщений для обеспечения безопасности типов.

Здесь - хороший пример

Затем вы создаете другой статический класс, который действует как модель сервиса от вашего веб-уровня до вашего уровня данных.

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

В зависимости от того, как настроены ваши бизнес-объекты, вам может потребоваться предоставить глубокие копии (т. Е. Реализовать IClonable и ovveride метод Clone) для ваших объектов.

Кроме того, решение для кэширования зависит от архитектуры веб-фермы. Если у вас много веб-серверов, скорее всего, ваши данные могут устареть, поэтому вам нужно выбрать лучший вариант (SQLCacheDependecy, распределенное кэширование и т. Д.).

0 голосов
/ 12 июня 2010

Очевидными недостатками являются достоверность кэша (откуда вы знаете, что данные не были изменены / добавлены с момента его кэширования) и использование памяти / диска.

Это хорошее решение, когда ваши данные статичны (не нужно думать, когда обновлять кеш).

Мы использовали аналогичный подход с динамическими данными, и кеш создал довольно много проблем.Иногда обновления кэша были слишком дорогими (сервер должен был уведомлять всех клиентов о данных, которые они кэшировали и которые были изменены), иногда использование памяти клиентами было слишком высоким.

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