Я занимаюсь разработкой веб-приложения с использованием ASP.NET MVC и использую Windsor Castle в качестве контейнера IoC (как WindsorControllerFactory
, так и для моих внутренних компонентов). В настоящее время я создаю и сохраняю контейнер в Application
(HttpApplicationState
) следующим образом:
protected void Application_Start()
{
...
IWindsorContainer windsorContainer = new WindsorContainer();
Application["WindsorContainer"] = windsorContainer;
...
}
protected void Application_End()
{
IWindsorContainer container = (IWindsorContainer)Application["WindsorContainer"];
container.Dispose();
Application["WindsorContainer"] = null;
}
Это правильный подход для приложений, которые будут работать на веб-фермах? Есть ли какие-либо проблемы, о которых мне нужно знать? Есть ли лучшее место для размещения контейнера?
Я знаю, что состояние Application
не используется несколькими серверами в веб-ферме, но я полагаю, что это не должно быть проблемой, если данные, хранящиеся в состоянии Application
, не зависят от запроса?