Кэширование в приложениях платформы .NET Framework

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

Платформа .NET Framework предоставляет функциональность кэширования, которую можно использовать для улучшения производительности и масштабируемости как серверных, так и клиентских приложений Windows, включая ASP.NET.

ПримечаниеПримечание

В .NET Framework 3.5 и более ранних версиях с помощью ASP.NET предоставлялась реализация кэша в памяти в пространстве имен System.Web.Caching.В предыдущих версиях .NET Framework кэширование было доступно только в пространстве имен System.Web и поэтому требовало зависимости от классов ASP.NET.В платформе .NET Framework 4 пространство имен System.Runtime.Caching содержит интерфейсы API, разработанные как для веб-приложений, так и для приложений, не связанных с Интернетом.

Кэширование данных

Информацию можно кэшировать путем использования классов в пространстве имен System.Runtime.Caching. Классы кэширования в этом пространстве имен предоставляют следующие возможности.

  • Абстрактные типы, которые образуют основу для создания пользовательских реализаций кэша.

  • Конкретная реализация кэша объектов в памяти.

Абстрактный базовый класс кэширования (ObjectCache) определяет следующие задачи кэширования.

  • Создание и управления записями кэша.

  • Указание информации по окончанию срока действия и вытеснению.

  • Активация событий, создаваемых в качестве отклика на изменения записей кэша.

Класс MemoryCache является реализацией в памяти кэша объекта класса ObjectCache. Класс MemoryCache можно использовать для большинства задач кэширования.

ПримечаниеПримечание

Класс MemoryCache моделируется на объекте кэша ASP.NET, определенном в пространстве имен System.Web.Caching.Следовательно, внутренняя логика кэширования подобна логике, предоставляемой в более ранних версиях ASP.NET.

Пример использования кэширования в приложении WPF см. в разделе Пошаговое руководство. Кэширование данных приложения WPF.

Кэширование в приложениях ASP.NET

Классы кэширования в пространстве имен System.Runtime.Caching предоставляют функциональность для кэширования данных в ASP.NET.

ПримечаниеПримечание

Если приложение предназначено для работы с .NET Framework 3.5 или более ранней версией, необходимо использовать классы кэширования, определенные в пространстве имен System.Web.Caching.Дополнительные сведения см. в разделе Общие сведения о кэшировании в ASP.NET.

ПримечаниеПримечание

При разработке новых приложений рекомендуется использовать класс MemoryCache.Интерфейс API, предоставленный в пространстве имен System.Runtime.Caching, подобен API, предоставленному в пространстве имен Cache.Следовательно, этот API будет знаком, если кэширование использовалось в более ранних версиях ASP.NET.Пример использования кэширования в приложениях ASP.NET см. в разделе Пошаговое руководство. Кэширование данных приложения в ASP.NET.

Кэширование вывода

Для ручного кэширования данных приложения можно использовать класс MemoryCache в ASP.NET. ASP.NET также поддерживает кэширование вывода, при котором в памяти сохраняются созданные выходные страницы, элементы управления и HTTP-ответы. Кэширование вывода можно настроить декларативно на веб-странице ASP.NET или путем использования параметров в файле web.config. Дополнительные сведения см. в разделе Элемент outputCache для элемента caching (схема параметров ASP.NET).

ASP.NET позволяет расширить кэширование вывода путем создания пользовательских поставщиков кэша вывода. Путем использования пользовательских поставщиков можно хранить кэшированное содержимое на других запоминающих устройствах, таких как диски, распределенные хранилища и распределенные модули кэширования. Для создания пользовательского поставщика кэша вывода необходимо создать класс, производный от класса OutputCacheProvider, и настроить приложение на использование пользовательского поставщика кэша вывода.

Кэширование в службах WCF REST

Для служб WCF REST платформа .NET Framework позволяет использовать преимущества декларативного кэширования вывода, доступного в ASP.NET. Это позволяет кэшировать ответы из операций службы WCF REST. Когда пользователь отправляет запрос HTTP GET службе, настроенной для кэширования, ASP.NET отправляет обратно кэшированный ответ, а метод службы при этом не вызывается. По истечении срока действия кэша при следующей отправке пользователем запроса HTTP GET будет вызван метод службы, и ответ будет снова кэширован.

Платформа .NET Framework позволяет также реализовать условное кэширование HTTP GET. В сценариях REST условный запрос HTTP GET часто используется службами для реализации интеллектуального HTTP-кэширования согласно описанию на странице HTTP Specification. Дополнительные сведения см. на странице Поддержка кэширования для веб-служб HTTP WCF.

Расширение кэширования в платформе .NET Framework

Кэширование в платформе .NET Framework разработано с учетом возможности расширения. Класс ObjectCache позволяет создавать пользовательскую реализацию кэша. Этот класс предоставляет элементы, доступные всем управляемым приложениям, включая Windows Forms, Windows Presentation Foundation (WPF) и Windows Communications Foundation (WCF). Это можно сделать для создания класса кэша, использующего другой механизм хранения, или если необходим точный контроль над операциями кэша.

Для расширения кэширования можно выполнить следующие действия.

Дополнительные сведения см. на странице Extensible Output Caching with ASP.NET 4 (VS 2010 and .NET 4.0 Series) блога Скотта Гатри (Scott Guthrie).

См. также

Задачи

Пошаговое руководство. Кэширование данных приложения WPF

Ссылки

ObjectCache

MemoryCache

Другие ресурсы

Пошаговое руководство. Кэширование данных приложения в ASP.NET