Изучение сессии в ASP.Net - Пользовательский режим сессии

ОГЛАВЛЕНИЕ

Пользовательский режим сессии

Обзор пользовательского режима сессии:

Обычно в приложении используется режим сессии InProc, StateServer или SQL Server, но также нужно знать основы пользовательского режима сессии. Этот режим сессии весьма интересен, потому что пользовательская сессия позволяет полностью контролировать создание всего, даже идентификатора сессии. Можно написать собственный алгоритм генерации идентификатора сессии.

Можно реализовать пользовательские поставщики, сохраняющие данные сессии в других механизмах хранения путем наследования от класса SessionStateStoreProviderBase. Можно генерировать новый идентификатор сессии путем реализации ISessionIDManager.

Следующие методы вызываются во время реализации пользовательской сессии:

 

В методе Initialize устанавливается пользовательский поставщик. Он будет инициализировать соединение с заданным поставщиком. SetItemExpireCallback используется для установки SessionTimeOut, можно зарегистрировать любые методы, которые вызовутся при окончании сессии. InitializeRequest вызывается при каждом запросе, а CreateNewStoreData используется для создания нового экземпляра SessionStateStoreData.

Когда следует использовать пользовательский режим сессии?

Пользовательский режим сессии можно использовать в следующих случаях:
•    Надо хранить данные сессии не в SQL Server.
•    Надо использовать существующую таблицу для хранения данных сессии.
•    Надо создать собственный идентификатор сессии.

Какая конфигурация требуется для него?

Надо сконфигурировать web.config так,

 

Плюсы и минусы

Плюсы:
•    Можно использовать существующую таблицу для хранения данных сессии. Это полезно, когда приходится использовать старую базу данных вместо SQL Server.
•    Он не зависит от IIS, поэтому перезапуск веб-сервера никак не влияет на данные сессии.
•    Можно создать собственный алгоритм генерации идентификатора сессии.

Минусы:
•    Обработка данных очень медленная.
•    Создание пользовательского поставщика состояния – низкоуровневая задача, требующая аккуратного подхода для обеспечения безопасности.

Всегда рекомендуется использовать любой сторонний поставщик, а не создавать собственный.

Обзор производственного развертывания

Производственная среда означает, что приложение развертывается на настоящем рабочем сервере. Развертывание приложения на настоящем сервере – большая трудность для веб-разработчика, потому что в масштабной производственной среде много пользователей, и невозможно справиться с нагрузкой от них с помощью одного сервера. Отсюда появились модели веб-фермы, балансировщика нагрузки, веб-сада, и т.д.
Недавно одно веб-приложение было развернуто в реальной производственной среде, доступной для миллиона пользователей, где было более 10 Active Directory, более 10 веб-серверов на балансировщике нагрузки и много серверов баз данных, серверов Exchange Server, серверов LCS и др. Было несколько веб-серверов. Основной риск, связанный с несколькими серверами, - управление сессиями. Следующий рисунок показывает общую схему производственной среды.

 

Далее описаны разные ситуации, которые надо учесть при развертывании приложения.

Пул приложений

Это одна из самых важных вещей, которую надо создать для приложения в производственной среде. Пулы приложений применяются для отделения групп рабочих процессов IIS, совместно использующих одну и ту же конфигурацию. Пул приложений позволяет изолировать веб-приложение для лучшей безопасности, надежности и доступности. Рабочий процесс служит в качестве границы процессов, отделяющей каждый пул приложений, чтобы когда один рабочий процесс или приложение сталкивается с проблемой или возвращается в исходное состояние, другие приложения или рабочие процессы не страдали.


 
Удостоверение пула приложений

Конфигурация удостоверения пула приложений – важный аспект безопасности в IIS 6.0 и IIS 7.0, так как она определяет удостоверение рабочего процесса, когда процесс обращается к ресурсу. Эти настройки исходят из IIS 6.0. В IIS 7.0 есть заранее заданные удостоверения, такие же, как и в IIS 6.0.

Удостоверение пула приложений

Описание

LocalSystem

LocalSystem– встроенная учетная запись, имеющая права администратора на сервере. Она может обращаться к локальным и удаленным ресурсам. Для любого вида доступа к файлам или ресурсам сервера надо задать удостоверение пула приложений Локальная система.

LocalServices

LocalServices– встроенная учетная запись имеет права аутентифицированной учетной записи локального пользователя. Ей запрещен доступ к сети.

NetworkServices

Удостоверение пула приложений по умолчанию. NetworkServicesимеет права аутентифицированной учетной записи локального пользователя.

Создание и назначение пула приложений

Откройте консоль IIS, щелкните правой кнопкой мыши по «Папка пула приложений» (Application Pool Folder) > Создать новый (Create New)

 

Введите Идентификатор пула приложений и нажмите Ok.

 

Теперь щелкните правой кнопкой мыши по «Виртуальный каталог» (используется StateServer Web sites) и назначьте StateServerAppPool виртуальному каталогу сервера состояний.

 

Итак, StateServer Web sites будет работать независимо в StateServerAppPool. Любая проблема, связанная с другим приложением, не повлияет на ваше приложение. Это главное преимущество создания отдельного пула приложений.