ASP.NET: Является ли Session Object моим приемлемым решением для статической переменной? - PullRequest
0 голосов
/ 11 июня 2011

Я прочитал несколько веток по этой теме, и мне нужны пояснения по нескольким предложениям, которые я прочитал в книге:

Если вы храните ваше состояние сеанса в процессе, ваше приложение не масштабируемые .Причина этого в том, что объект Session хранится на одном конкретном сервере.Поэтому хранение состояния сеанса в процессе не будет работать с веб-фермой .

  1. Что означает «масштабируемый» в первом предложении?
  2. Означает ли третье предложение, что если мое приложение находится на общем веб-хосте, я не должен использовать Session ["myData"] для хранения своих вещей?Если так, что я должен использовать?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 11 июня 2011

1

Масштабируемость в в этом смысле :

способность системы, сети или процесса изящно справляться с растущими объемами работы или способность расширяться, чтобы приспособиться к этому росту. [

2:

Используйте сервер сеансов или сохраняйте сеансы в SQL Server, которые описаны здесь .

1 голос
/ 11 июня 2011

ASP.NET может хранить всю объединенную информацию о сеансе для приложения («состояние сеанса») в 3 возможных местах на стороне сервера (файлы cookie клиента также возможны, но это другая история):

  • «InProc» (в процессе), что означает в памяти на сервере IIS, подключенном к рабочему процессу asp.net,
  • «StateServer», который представляет собой отдельный процесс, к которому могут обращаться несколько серверов IIS, но по-прежнему сохраняет состояние сеанса в памяти, и
  • «SQLServer», который хранит состояние сеанса в базе данных SQL Server.

1) Причина, по которой In-process не масштабируется, заключается в том, что если ваши потребности превышают емкость одного сервера IIS, несколько серверов не могут использовать состояние сеанса In-process. Если вы определили, что общий хостинг удовлетворит ваши потребности, вам не нужно об этом беспокоиться.

2) Когда вы сохраняете что-то в Session["Name"], ASP.net сохраняет эти данные везде, где приложение настроено для хранения состояния сеанса. Если вы хотите изменить место хранения состояния сеанса, все, что вам нужно сделать, это настроить файл web.config. Если вы используете среду общего хостинга, ваше развертывание IIS считается одним сервером, хотя, несомненно, фактические серверы находятся в какой-то ферме.

См .: Режимы состояния сеанса MSDN

...