Различные способы хранения данных в состоянии сеанса - PullRequest
0 голосов
/ 23 декабря 2008

Меня попросили разработать стратегию управления состоянием для веб-приложения ASP .NET / MVC C # 3.5

Я решил заняться хранением сессий на сервере состояний - это будет отдельный физический блок. Меня беспокоит время, которое потребуется для сериализации / десериализации объектов при хранении в сеансах ...

Кто-нибудь знает методику достижения максимальной производительности при этом?

Также может потребоваться сжатие информации перед ее сохранением в справке сеанса или это также приведет к снижению производительности.

РЕДАКТИРОВАТЬ: я использую отдельное поле для сервера состояний, так как у нас будет несколько веб-серверов.

Ответы [ 6 ]

2 голосов
/ 23 декабря 2008

Лично наиболее распространенные элементы здесь - это работа с сокращением количества информации, вводимой в сеанс.

Сжатие МОЖЕТ сэкономить место, но для его выполнения потребуется больше процессорного времени, что, скорее всего, приведет либо к снижению производительности, либо, по крайней мере, к чистой прибыли. Если вы не говорите о ДЕЙСТВИТЕЛЬНО больших объектах.

1 голос
/ 23 декабря 2008

Пример сжатия Zip для сеанса, приложения и кэша, используемого здесь, в StackOverflow.

0 голосов
/ 23 декабря 2008

Некоторые отметили, что слишком большое количество данных в состоянии сеанса для каждого пользователя является признаком проблемы, но они не указали прямо на решение этой проблемы: сохраните пользовательскую базу данных SQL и сохраните всю пользовательскую информацию в этом , Тогда состояние сеанса обычно состоит только из идентификатора зарегистрированного пользователя. Любое другое состояние, вероятно, напрямую связано с текущей активностью пользователя, что предполагает, что оно может более подходящим образом передаваться в виде файлов cookie в памяти или переменных строки запроса. В любом случае, зачастую это лучший вариант, так что когда пользователь нажимает кнопки «Назад» и «Вперед», вещи могут оказаться в поврежденном состоянии.

0 голосов
/ 23 декабря 2008

Вы уверены, что будете хранить столько данных в хранилище сеансов? Типичное использование сеанса для одного пользователя - несколько сотен байт!

Что касается сериализации и де-сериализации, то с таким небольшим размером можно пренебречь.

Конечно, вы будете ожидать большего количества пользователей, чем это, но все же.

Если вы храните большие объемы данных в своем сеансе, тогда IMO, вы делаете это неправильно.

0 голосов
/ 23 декабря 2008

Будьте осторожны, вы не пытаетесь преждевременно оптимизировать ваше решение. Прежде чем реализовать что-то вроде сжатия сеанса, было бы неплохо провести серию тестов, чтобы определить, необходимо ли что-то подобное в вашем приложении.

0 голосов
/ 23 декабря 2008

Убедитесь, что вы отключили состояние сеанса на страницах, которые его не используют. «По умолчанию диспетчер состояния сеанса ASP.NET выполняет два доступа - один доступ на чтение и один доступ на запись - к хранилищу данных сеанса в каждом запросе независимо от того, использует ли запрашиваемая страница состояние сеанса». - Журнал MSDN

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...