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

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

Важно отметить, что обработчик Page l.oail на рис. 7 определяет, надо ли использовать кэшированные данные,'по
шаблону. Рекомендуется всегда применять такой шаблон при работе с элементами в
кэше. Здесь с помощью оператора if текущее содержимое кэша проверяется на null (ключ кэшнрованных данных лучше хранить в переменной, поскольку вы будете неоднократно
ссылаться на него). Если содержимое соответствует null, вы должны
получить данные из источника и поместить в кэш; в ином случае возвращайте
данные из кэша. Если для доступа к данным применяется очень сложная логика,
вынесите этот оператор if в отдельную функцию.
На самом деле функциональность объекта Cache куда шире, чем я мог здесь рассказать. Это один из самых мощных объектов
в ASP.NET, и я настоятельно советую детально разобраться в нем.
Объект Context
Объект Context хранит данные,
специфичные для отдельного запроса кон-
кретного пользователя. Эти данные существуют в течение срока жизни
запроса. Контейнер Context способен хранить
значительные объемы дан-
но этой возможностью обычно не поскольку для каждо-
го запроса часто
создается новый экземпляр этого объекта посредством обработчика, определенного
в global.asax.