Управление состоянием в ASP.NET
Страница 9. Серверные методы. Context.Items


Context.Items

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

Этот контейнер доступен как через одноименное свойство веб-страницы, так и через свойство System.Web.HttpContext.Current, что позволяет использовать его из всех Http модулей и Http хэндлеров веб-приложения. Типичным применением является запись некоторой конфигурационной информации, которая будет использоваться из подключаемых Http модулей.

// добавление значения
Context.Items["myKey"] = myValue;
// чтение значения
Response.Write(Context["myKey"]);

Как мы видим, ASP.NET предоставляет достаточно много способов управления состоянием, у каждого из которых есть свои достоинства и недостатки. ViewState лучше использовать для кратковременного хранения небольшого объема информации, которая относиться непосредственно к определенной странице. Cookie следует использовать для долговременного хранения простых структур данных на клиенте, как правило, это различного рода настройки пользователя. Application в данный момент считается устаревшим и не рекомендуется использовать, хотя он вполне подойдет для хранения какой-нибудь общей для всего приложения информации, например connection string к базе данных. Session необходимо использовать для хранения пользовательской информации. Этот контейнер предоставляет достаточный уровень защищенности для хранения в нем секретной информации пользователя и позволяет защититься от возможной потери информации при сбоях веб-приложения или веб-сервера. Однако не рекомендуется хранить в сессии слишком большие объемы информации, поскольку при существенном увеличении пользователей приложения могут возникнуть проблемы с нехваткой ресурсов на сервере. Для кэширования больших объемов лучше использовать Cache. В этом контейнере, как правило, сохраняют редко изменяющиеся справочники. Кэширование данных позволяет многократно ускорить скорость получения данных по сравнению с той же операцией с СУБД. Context.Items в основном служит для передачи данных между HTTP модулями.

Александр Басюк

 
« Предыдущая статья   Следующая статья »