Когда мне следует рассмотреть возможность использования SessionState для хранения значений моей переменной? - PullRequest
3 голосов
/ 26 июля 2010

Можно сказать что-то вроде

"Если у вас есть такие ситуации, то SessionState является обязательным для хранения ваших значений между постбеками."

МожетВы перечислите мне основные причины, которые заставляют разработчика asp.net переключать SessionState из ViewState или HiddenFields или строк запросов?

спасибо

Ответы [ 4 ]

4 голосов
/ 26 июля 2010
  • Иногда это экономит некоторые усилия, когда у вас есть пользовательский объект, который будет перемещаться как есть, пока пользователь перемещается по более чем двум страницам.

  • Когдапользовательские данные чувствительны, вы не можете использовать методы клиента для их сохранения, и если вы зашифруете их, вы столкнетесь с проблемами производительности, зашифровывая и расшифровывая данные каждый раз, когда вы работаете, особенно в больших системах, когда страница aspx имеет тысячи строк кода (производительность достаточно плохая, чтобы ударить)

1 голос
/ 26 июля 2010

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

Примером являются данные, извлеченные из дорогостоящего запроса к базе данных, или данные, полученные из удаленного веб-сервиса.

ViewState, скрытые поля и строки запроса должны использоваться для небольших объемов данных, которые не являются конфиденциальными.

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

1 голос
/ 26 июля 2010

Состояние сеанса используется всякий раз, когда вы хотите сохранить информацию

  • на пользователя
  • на сервере

На серверной части для безопасностипричины.Вы не хотите передавать информацию, которая подвержена безопасности для браузера, в viewstate, hiddenfields или в строке запроса.Эти 3 легко читаются.

Также убедитесь, что не помещаете слишком много информации в состояние сеанса или когда вы делаете это, затем пересмотрите использование внепроцессного подхода, такого как использование менеджера состояний или сервера sql.

0 голосов
/ 26 июля 2010

Чтобы добавить к уже полученным ответам:

  • Когда у вас есть относительно большой объем данных, которые вы хотите связать с пользователем.В этих случаях ViewState работает очень медленно, если вы имеете дело с обратными вызовами (что-либо более 150К может действительно замедлить ответы на сканирование), а строка запроса совершенно не подходит (из-за размера URL-адреса, а также жестких ограничений на длину, налагаемых веб-серверами ибраузеры.)
...