|
Объект Session (Сеанс)
Информация о сеансе
индивидуальных пользователей может
храниться во встроенном объекте Session (Сеанс),
который является экземпляром класса
HttpSession-State. Доступ к этому объекту удобно
получать с помощью свойства Session (Сеанс)
класса Page (Страница) Класс HttpSessionState,
аналогично классу HttpApplicationState, имеет
словарь в формате "ключ — значение",
который можно использовать для хранения
как объектов, так и скалярных величин.
При реализации переменных сеанса
возникают некоторые интересные вопросы.
- Обычно для идентификации сеанса, от
которого поступил запрос, используются
небольшие фрагменты данных о предыстории
обращений данного пользователя к данному
Web-серверу, автоматически создаваемые
сервером на машине пользователя (cookies).
Что делать, если такие фрагменты данных (cookies)
не поддерживаются броузером, или
отключены пользователем?
- Поддержка состояния сеанса для многих
пользователей влечет накладные расходы.
Истекает ли срок действия состояния
сеанса после определенного периода
времени?
- Высокопроизводительными Web-узлами
используется группа серверов. Каким
образом приложение может получить
необходимые ему данные, если второй
запрос обслуживается не той машиной,
которой обслуживался первый запрос?
Состояние сеанса и небольшие
фрагменты данных о предыстории обращений
конкретного пользователя к конкретному Web-серверу,
автоматически создаваемые сервером на
машине пользователя (cookies)
По умолчанию небольшие фрагменты
данных о предыстории обращений конкретного
пользователя к конкретному Web-серверу,
автоматически создаваемые сервером на
машине пользователя (cookies), в ASP.NET
используются для идентификации сеанса, в
котором отправлен запрос. Но ASP.NET можно
сконфигурировать так, чтобы при выполнении
не создавались эти небольшие фрагменты
данных о предыстории обращений конкретного
пользователя к конкретному Web-серверу,
обычно автоматически создаваемые сервером
на машине пользователя (cookies). В такой модели
идентификатор сеанса (Session ID), который
обычно сохраняется в небольшом фрагменте
данных о предыстории обращений конкретного
пользователя к конкретному WWW-серверу,
автоматически создаваемом сервером на
машине пользователя (cookie), внедряется в
унифицированный указатель информационного
ресурса (URL). Конфигурация, где не
используются небольшие фрагменты данных о
предыстории обращений конкретного
пользователя к конкретному Web-серверу,
автоматически создаваемые сервером на
машине пользователя (cookies), обсуждается в
следующем разделе.
Предельное время ожидания для
состояния сеанса
По умолчанию, предельное время
ожидания для состояния сеанса истекает
после 20 минут. Это означает, что если данный
пользователь находится в состоянии
ожидания (простоя) в течение указанного
периода времени, сеанс прекращается, и
запрос от клиента теперь будет
обрабатываться как запрос от нового
пользователя, причем будет создан новый
сеанс. Как и другие параметры, предельное
время ожидания указывается в файле
конфигурации, — это мы обсудим в разделе
"Конфигурация ASP.NET".
Хранение состояния сеанса
С помощью модели состояния сеанса,
которая отделяет хранение информации от
использования сохраненной информации
приложениями, ASP.NET полностью решает не
только проблему группы серверов, но и много
других проблем. Модели состояния позволяют
реализовать различные сценарии хранения
так, чтобы не затрагивать при этом код
приложения. Сервер состояния .NET не имеет
"активных" объектов для запросов
Вместо этого в конце каждого сетевого
запроса все объекты в коллекции сеанса
преобразуются в последовательную форму,
чтобы запомнить состояние сеанса. Когда тот
же самый клиент возвращается к странице,
объекты сеанса преобразуются из
последовательной формы в параллельную.
По умолчанию, состояния сеанса
кэшируются, и поэтому, как правило, хранятся
в оперативной памяти Конечно, в
конфигурации можно указать, что в качестве
кэша следует использовать память
определенной машины или же что состояния
сеанса нужно сохранять в базе данных SQL-сервера
В этих случаях данные не привязаны к
определенному серверу, и потому данные
сеанса могут безопасно использоваться
группой серверов
|