Я настоятельно рекомендую, прежде чем приступить к масштабированию сеанса, в первую очередь оценить, нужен ли сеанс вообще.
Переменные сеанса сериализуются и десериализуются для каждой загрузки отдельной страницы, независимо от того, использует страница эти данные или нет. (РЕДАКТИРОВАТЬ: Крейг указал, что у вас есть некоторый уровень контроля над этим в .net 4 http://msdn.microsoft.com/en-us/library/system.web.sessionstate.sessionstatebehavior.aspx Однако у этого все еще есть недостатки, см. комментарии к этому ответу.)
Для экземпляров с одним сервером это нормально, поскольку вы просто извлекаете его из локальной памяти своего веб-сервера. Нагрузка на эти приложения, как правило, довольно мала, поэтому локальное кэширование пользовательской информации имеет смысл.
Однако, как только вы перемещаете хранилище сеанса на другой сервер, вы увеличиваете сетевые требования и время загрузки страницы вашего приложения. А именно, каждая страница приведет к перемещению данных сеанса с удаленного сервера по сетевому кабелю в память веб-сервера.
На этом этапе вы должны спросить себя: является ли нагрузка на получение этой информации напрямую с сервера базы данных по мере необходимости большей, чем на получение ее с сервера сеанса каждый раз?
В некоторых случаях получение его с сервера базы данных по мере необходимости занимает больше времени или приводит к большему трафику, чем его получение с удаленного сервера сеанса.
Имея в виду, что многие люди настраивают свои серверы баз данных, чтобы они также были серверами сеансов, и вы начинаете понимать, почему использование сеанса не имеет никакого смысла.
Единственный раз, когда я мог бы рассмотреть возможность использования сеанса для веб-приложений с балансировкой нагрузки, - это если время для сбора данных превышает «разумное» количество времени. Например, если у вас действительно сложный запрос для возврата одного значения, и этот запрос придется выполнять для большого количества страниц. Но даже в этом случае есть более эффективные способы, которые уменьшают сложность работы с данными удаленного сеанса.
person
NotMe
schedule
14.01.2011
Session
- кеш. Он отличается от обычногоCache
постольку, поскольку он зависит от пользователя. - person Craig Stuntz   schedule 14.01.2011