Контейнеры IOC и веб-приложения

#asp.net #web-applications #castle-windsor #stateful

#asp.net #веб-приложения #замок Виндзор #с сохранением состояния

Вопрос:

Я начал работать над этим.СЕТЕВОЕ веб-приложение, в котором имеется контейнер IOC (Windsor) для создания бизнес-менеджеров и хранения их в памяти до тех пор, пока IIS не переработает их. В основном эти бизнес-менеджеры имеют свои собственные состояния, и данные, содержимое которых изменяется из фоновых потоков, которые запускаются при Application_Start . Я ожидал, что веб-приложение будет работать не так (которое должно быть без состояния и для каждого потока для каждого запроса), и я не совсем уверен, является ли эта реализация устойчивой / масштабируемой. Кто-нибудь пробовал что-нибудь подобным образом, если да, то какие последствия / плюсы вы видите в этом?

Ответ №1:

Мы используем статику в приложении только для основных функций. Статические классы являются общими для всех запросов, поэтому удобство использования должно быть несколько низким. В мире разработки мы видим, что статика всплывает все чаще и чаще: ASP.NET MVC 3 использует их для различных областей приложения, а также другие популярные библиотеки исходных текстов ОС.

Пока их не так много, все должно быть в порядке… но вы всегда можете проверить с помощью профилировщика памяти, насколько большими они становятся, и не занимают ли они слишком много памяти.

Другой альтернативой могло бы быть размещение их в кэше или их перестроение и сохранение в каждом запросе. Чтобы сохранить их глобально в запросе, используйте HttpContext.Current.Items collection.