Что лучше: статическая переменная В.С. Сессия приложений Asp.NET? - PullRequest
8 голосов
/ 21 мая 2009

Допустим, вы хотите использовать некоторый ресурс, например, класс или переменную, для всех потоков / сеансов в веб-приложении ASP.NET Что лучше?

1) Статическая переменная, имеющая потокобезопасные средства доступа к этой статической переменной?

2) Или переменная сеанса приложения ASP.NET?

Ответы [ 4 ]

9 голосов
/ 21 мая 2009

Если у вас есть только один из них, разница невелика.

Если у вас их несколько, вы должны использовать статические переменные вместо Application переменных. Метод Application.Lock блокирует все Application переменные, в то время как вы можете использовать отдельные идентификаторы синхронизации для статических переменных, так что каждая блокировка влияет только на код, который обращается к этой конкретной переменной.

4 голосов
/ 08 сентября 2011

Статические члены будут предлагать лучшую производительность, но недостатком является то, что они не безопасны для потоков:

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

От: http://support.microsoft.com/default.aspx?scid=kb;en-us;Q312607

и

http://weblogs.asp.net/plip/archive/2003/12/01/40526.aspx

0 голосов
/ 14 июля 2009

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

0 голосов
/ 21 мая 2009

Это распространенный сценарий, при котором вы просматриваете несколько страниц и собираете данные. Я бы использовал объект Session для этого сценария. Статические переменные должны использоваться, когда полное приложение нуждается в одном и том же объекте.

Если значение, которое вы хотите сохранить, зависит от пользователя, используйте Session.

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