Architecture Net

       

Объект 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-сервера В этих случаях данные не привязаны к определенному серверу, и потому данные сеанса могут безопасно использоваться группой серверов

    CompEbook.ru Железо, дизайн, обучение и другие


    Содержание раздела