Прошу прощения, если это было задано раньше, но я не нашел конкретного вопроса, который у меня есть в голове.Альтернативы использованию переменных сеанса в ASP.NET (включая MVC)
Для веб-сайта, который я создаю (с использованием ASP.NET MVC) - производительность - важная функция. Кроме того, есть вероятность, что сайт может быть размещен в среде, в которой пул приложений будет перерабатываться каждые 20 минут (или раньше, если достигнут порог памяти). Я бы хотел быть полностью независимым от использования переменных сеанса и вместо этого сохранить в файле cookie значение, подобное GUID. Мое рассуждение - я не знаю, как долго сессия будет продолжаться из-за утилизации AppPool и не хочет, чтобы их сеанс был тайм-аут досрочно и заставил их повторно вводить логин.
Значение GUID в файле cookie будет действовать как ключ поиска к таблице, в которой я храню информацию, относящуюся к сеансу (значение идентификатора пользователя и т. Д.). Поэтому, если мне нужны эти данные, я мог бы получить их из базы данных. Я бы все же использовал событие Session_OnEnd, чтобы очистить эту таблицу сеансов строк со значением «последнего действия» более 20 минут (или, как правило, длинные сеансы для последнего). Поэтому я предполагаю, что все равно буду использовать состояние сеанса, а не переменные сеанса.
Моя забота, опять же, о производительности. Поэтому мне было любопытно, есть ли какие-либо более эффективные способы избежать использования переменных сеанса, сохраняя при этом возможность знать, что такое пользователь, и управлять их посещением сайта «сеансовым» способом. Я все еще новичок в MVC, но имею много опыта работы в ASP.NET на протяжении многих лет, поэтому, надеюсь, мой вопрос имеет смысл!
EDIT: Я как бы отстраняюсь от желания использовать SQL Session State, потому что я, скорее всего, буду в среде с общим сервером sql server и не думаю, что у меня будет логин с возможностью создавать/запускать задания если необходимо для удаления устаревших данных сеанса sql и т. д. Существуют ли какие-либо реальные недостатки в зависимости от Session_OnEnd с файлом cookie в сценарии утилизации AppPool? Может ли Session_OnEnd не выполняться для сеансов, которые являются текущими при повторном использовании AppPool?
В противном случае известных как SQL и Cookies. – madcolor
+1: вам не нужно катить свою собственную базу данных, если вы переходите с постоянством состояния SQL –
http://www.dbazine.com/sql/sql-articles/cook9 – madcolor