Состояние приложения ASP.NET против статического объекта - PullRequest
39 голосов
/ 20 ноября 2008

Если у меня есть стандартное приложение ASP.NET, есть ли какая-то разница между созданием статического объекта в отличие от перевода объекта в состояние приложения?

Насколько я понимаю, оба объекта существуют ОДНАЖДЫ для домена приложения.

Во-вторых, что произойдет, если у вас есть статический объект в ссылочной dll для сайта ASP.NET. Это также часть домена приложения, поэтому он всегда будет существовать один раз?

1 Ответ

57 голосов
/ 20 ноября 2008

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

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

Кроме того, да, статические переменные ведут себя одинаково независимо от того, откуда они загружены, и существуют ровно один раз для домена приложения (если вы не говорите о тех, которые помечены [ThreadStatic])

...