Должен ли я использовать сессии ASP.NET или избегать их и почему? - PullRequest
5 голосов
/ 20 марта 2009

Стоит ли использовать сессии ASP.NET или избегать их и почему?

Ответы [ 8 ]

4 голосов
/ 20 марта 2009

Для новых приложений Я стараюсь их избегать и просто предпочитаю зашифрованные или подписанные куки. По общему признанию, это только что появившееся личное предпочтение: просто потому, что это еще одна вещь, которую нужно сломать, и после двухлетней работы по поддержанию работоспособности сайта 24/7/365, это единственное, что сломалось при головокружении, таинственный путь. Также легко забыть добавить [Serializable] на ваши объекты и наблюдать, как они взрываются во время выполнения, когда они пытаются сохраниться в сеансе вне процесса. Так что это еще один механизм, чтобы сказать, так сказать.

Тем не менее, я использую сеансы в течение лет без каких-либо значительных проблем, за исключением того, что мне нужно постоянно заботиться о том, чтобы хранилище сеансов работало и работало. Если вы работаете в InProc, вам нужно беспокоиться о том, что сессии будут выгружаться при каждом перезапуске пула приложений, и это может привести к всплеску использования памяти рабочего процесса, что является еще одним недостатком; с помощью одного из других методов приятно иметь возможность выпускать точечные обновления для веб-сайта и не влиять на текущие состояния клиентов.

(лично я не видел проблем с масштабированием сеансов даже на нескольких серверах. Но опять же, я работаю в небольшом бизнесе [около 3 просмотров в секунду]. Я думаю, что вы все равно обычно общаетесь с базой данных для чего-то стоимость получения сеанса находится в той стирке.)

Так что использование сессий не является плохим выбором, вам просто нужно помнить, чтобы не увлекаться этим. Думайте об этом как о куки-файле на стороне сервера, пытаясь ограничить себя искусственным барьером в 4 КБ или около того. Что касается существующих приложений, то я, конечно же, не беспокоюсь о том, чтобы их не обрабатывать, но в целом я предпочитаю сделать это простым и попытаться обойтись без него.

3 голосов
/ 20 марта 2009

Для интранет-приложений я их использую (но не особо).

Для внешних приложений используйте их, если хотите, но только если у вас есть один сервер.

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

1 голос
/ 20 марта 2009

Я часто использую переменные сеанса, но не для объектов большого размера. Проблема с переменными сеанса в том, что вы можете забыть очистить их, когда закончите работу, вы можете жестко закодировать его ключ везде в вашем коде. по этим причинам я инкапсулирую переменные сеанса в объект, который я называю переменными сеанса. и получить к ним доступ через него. когда мне нужно очистить их, я определяю метод в своем объекте, чтобы очистить все переменные за сеанс.

Вместо viewstate или строки запроса он подходит лучше всего для большинства случаев, с которыми я столкнулся.

1 голос
/ 20 марта 2009

Часто задаваемые вопросы о состоянии сеанса ASP.NET это ответит на положительные стороны того, что имеет переменные сеанса и т. Д. поэтому ответ на такой вопрос варьируется

0 голосов
/ 20 марта 2009

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

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

0 голосов
/ 20 марта 2009

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

0 голосов
/ 20 марта 2009

Управление сессиями ASP.NET хорошо, поэтому не делайте удочку для себя, пытаясь избежать ее использования. Сеансы управления ASP.NET достаточно хорошо расширяются, чтобы предлагать различные решения в зависимости от ваших потребностей. Вам также следует следить за проектом Microsoft Velocity .

Кев

0 голосов
/ 20 марта 2009

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

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