Какой из них лучше, InProc или SQL Server, для режима состояния сеанса в asp.net?

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

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

И последний вопрос касается атрибута Timeout. Этот атрибут влияет на продолжительность моего сеанса, когда я устанавливаю его в режим InProc?

Ответ 1

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

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

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

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

Сегмент без cookie

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

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

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

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

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

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

Тайм-аут сеанса

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

Ответ 2

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

In-Proc:

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

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

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

Сервер Sql:

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

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

Ответ 3

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

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

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

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

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

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

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

Ответ 4

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