Кэширование в приложениях платформы .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. Дополнительные сведения см. в разделе Поддержка кэширования для веб-служб HTTP WCF.
Расширение кэширования в платформе .NET Framework
Кэширование в платформе .NET Framework предусматривает возможность расширения. Класс ObjectCache позволяет создавать пользовательскую реализацию кэша. Этот класс предоставляет члены, доступные всем управляемым приложениям, включая Windows Forms, Windows Presentation Foundation (WPF) и Windows Communications Foundation (WCF). С помощью пользовательской реализации можно создать класс кэша, использующий другой механизм хранения, или обеспечить точный контроль над операциями кэша.
Для расширения кэширования можно выполнить указанные ниже действия.
Создайте пользовательский класс, производный от класса ObjectCache, а затем предоставьте в нем пользовательскую реализацию кэша.
Создайте класс, производный от класса MemoryCache, и настройте или расширьте его. Пример того, как это сделать, см. в записи блога Кэширование данных приложений с помощью нескольких объектов кэша в приложении ASP.NET.
Создайте класс, производный от класса OutputCacheProvider, и настройте для приложения использование пользовательского поставщика кэша выходных данных.
Дополнительные сведения см. в записи Расширяемое кэширование выходных данных с помощью ASP.NET 4 (VS 2010 и платформа .NET Framework серии 4.0) в блоге Скотта Гатри.