Asp.net 在web场上使用Windsor容器
我正在使用ASP.NET MVC开发一个web应用程序,我正在使用Windsor Castle作为WindsorController Factory和我的内部组件的IoC容器。目前,我正在创建容器并将其存储到应用程序HttpApplicationState中,如下所示:Asp.net 在web场上使用Windsor容器,asp.net,asp.net-mvc,castle-windsor,Asp.net,Asp.net Mvc,Castle Windsor,我正在使用ASP.NET MVC开发一个web应用程序,我正在使用Windsor Castle作为WindsorController Factory和我的内部组件的IoC容器。目前,我正在创建容器并将其存储到应用程序HttpApplicationState中,如下所示: protected void Application_Start() { ... IWindsorContainer windsorContainer = new WindsorC
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;
}
对于将在Web场上运行的应用程序,这是一种合适的方法吗?有什么我需要注意的问题吗?有更好的地方放集装箱吗
我知道应用程序状态不会在web场中的服务器之间共享,但我认为只要存储在应用程序状态中的数据不是特定于请求的,这应该不会是一个问题 我更喜欢将容器存储在类似Ayende的文件中横切关注点可以比通过将代码与静态引用耦合更优雅地解决,但无论如何,这与我的要求没有多大关系。即使您确实使用静态网关,它也不会在请求之间被保留。这是对您的问题的回答,是否有更好的地方放置容器?。无论如何,容器通常不会向应用程序的其余部分公开,因此不会有太大的区别。使用静态IoC确实可以跨请求保存它,因为它在内部存储在一个静态变量中。。。