Какой из них лучше, InProc или SQL Server, для режима состояния сеанса в asp.net? - PullRequest
22 голосов
/ 31 декабря 2011

Я занимаюсь разработкой веб-сайта ASP.NET. Я хочу знать, какой из них лучше в режиме состояния сеанса: InProc или SQL Server? Мне нужно услышать о вашем опыте в этом вопросе.

Другой вопрос касается атрибута без печенья. Есть ли какая-нибудь дыра в безопасности на моем сайте, если я установил ее в значение true? Во всех примерах, которые я видел на сайте MSDN, для этого атрибута было установлено значение false.

И последний вопрос касается атрибута Timeout. Влияет ли этот атрибут на время жизни моих сессий, когда я переключаю его в режим InProc?

Ответы [ 4 ]

31 голосов
/ 31 декабря 2011

Лучше с точки зрения чего?

  • Сессия InProc намного быстрее, имеет меньше требований (сериализация), но непригодна для использования при запуске приложенияна нескольких веб-серверах:

  • Sql сеанс значительно медленнее, имеет требования к сериализации объектов, но может использоваться несколькими веб-серверами;

Это главное различие между ними, о котором разработчики должны в основном заботиться.

Сессия без cookie

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

Если вы отключите обработку идентификатора сеанса cookie, вы сможете увидеть идентификатор сеанса.Но вы тоже можете проверить куки.Число там.

И срок действия файла cookie сеанса задан для сеанса браузера, поэтому он практически одинаков с точки зрения сохранения.

Сессии могут быть взломаны, если вы знаете идентификатор сеанса другой стороны.Конечно, проще, если вы используете сеансы без файлов cookie, потому что все, что вам нужно сделать, это изменить URL-адрес ...

И есть еще одна вещь - копирование URL-адресов и совместное использование / сохранение (Избранное).Полагаю, мне не нужно объяснять проблему.

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

Время ожидания сеанса

Время ожидания сеанса всегда связано с истечением срока сеанса независимо от типа сеанса.Но вы должны знать, что состояние сеанса SQL может не соответствовать этому параметру при использовании выпусков SQL Express, поскольку вам нужна служба агента SQL Server для отмены сеансов с истекшим сроком действия.Вы можете решить эту проблему, написав собственную службу Windows, которая отбрасывает сеансы с истекшим сроком действия.

15 голосов
/ 31 декабря 2011

Вы можете использовать сессию тремя способами. У каждого есть свои преимущества и недостатки

In-Proc:

  • Inproc сессия быстрее.
  • Вы можете добавлять объекты без сериализации
  • Но ограничено одним сервером, если ваше приложение будет работать на более чем один сервер. Это не будет работать для вас
  • Если что-то случится, пул приложений потеряет всю информацию о сеансе

Состояние сеанса:

  • Запустится как служба Windows
  • Если ваше приложение будет работать на нескольких серверах, это поможет
  • Объекты, добавленные в сеанс, должны быть сериализованы

Сервер Sql:

  • Использует сервер sql, но есть и реализация Oracle
  • Медленнее, чем State Server
  • Гораздо надежнее

Проверьте также этот вопрос: SQLServer против StateServer для производительности состояния сеанса ASP.NET

2 голосов
/ 16 июля 2016

Состояние сеанса InProc

Режим сеанса InProc указывает, что состояние сеанса хранится локально, означает, что в режиме состояния сеанса InProc хранятся объекты в AppDomain веб-приложения. Из-за этогосостояние сеанса теряется при перезапуске IIS (Internet Information System).
Как правило, домен домена перезапускается на основании нескольких факторов, таких как настройки атрибута memoryLimit в разделе файла конфигурации, изменение Global.asax или файла Web.config и т. д..

Мы можем использовать режим состояния сеанса StateServer или SqlServer для преодоления этих проблем, и здесь состояние сеанса не сохраняется в домене приложения веб-приложения.

Состояние сеанса OutProc

В сеансе OutProc состояние Sessin хранится в режимах StateServer и SqlServer, которые отсутствуют в AppDomain веб-приложения.

StateServer: он использует автономный MicrosoftСлужба Windows для хранения переменной сеанса, поэтому эта служба не зависитВ отличие от IIS, он может работать на отдельном сервере.Вы можете использовать этот режим для решения балансировки нагрузки, поскольку несколько веб-серверов могут совместно использовать переменные сеанса.Хотя переменные сеанса не теряются при перезапуске IIS, производительность пересекается с границами процесса.

SqlServer: Режим SqlServer также позволяет использовать хранилище состояний, расположенное внеПроцесс IIS, который может быть расположен на локальном компьютере или на удаленном сервере.Для сохранения информации о сеансе вы можете использовать режим SqlServer. Режим SqlServer аналогичен внепроцессному режиму, за исключением того, что данные сеанса хранятся в SQL Server.

0 голосов
/ 31 декабря 2011

Сеанс SQL - лучший вариант, чем сеанс inproc

...