В чем недостаток статической переменной в веб-приложении по отношению к памяти и производительности? - PullRequest
0 голосов
/ 22 июля 2011

Я определяю статическую переменную в Global.asax. И я хочу использовать эту переменную на всех веб-страницах моего сайта.

Так что я просто хочу знать, есть ли недостатки этой глобальной статической переменной в отношениипамяти и производительности в веб-приложении?

Есть ли какое-либо конкретное преимущество вариабельного значения приложения по сравнению с глобальной статической переменной в отношении памяти и производительности.

1 Ответ

3 голосов
/ 22 июля 2011

Предполагая, что вы пытаетесь кэшировать простое значение, нет реальной проблемы с памятью или производительностью, но это зависит от того, что вы пытаетесь сделать.

Если вам нужно удобное место для сохранения значения, доступного только для чтения, при компиляции, вероятно, лучше использовать const.

Если вы хотите кешировать какое-то простое глобальное значение, такое как номер версии приложения в виде строки, то вполне нормально поместить это в статическое значение.

Одна вещь, которую вы должны понять, это то, что объект Application (т.е. Global.asax) является , а не синглтоном. Может быть несколько экземпляров приложения, например, когда IIS решает, что пришло время перезапустить пул приложений. AFAIK экземпляры приложения будут работать в разных доменах приложений, поэтому будет также несколько экземпляров вашей статической переменной.

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

...