很常见为ASP.NET应用程序创建依赖注入容器,以使其与应用程序同时存在。
我会在每个请求中创建DI容器,并在请求结束时释放它。主要目的是当容器被处理时,任何DI容器都支持处理对象。
附加:如果需要在请求之间共享资源(如NHibernate SessionFactory),只需将它们保存在静态变量中,并将该值封装在每个请求的对象中。
我会在每个请求中创建DI容器,并在请求结束时释放它。主要目的是当容器被处理时,任何DI容器都支持处理对象。
附加:如果需要在请求之间共享资源(如NHibernate SessionFactory),只需将它们保存在静态变量中,并将该值封装在每个请求的对象中。
public class SessionFactoryAggregator : ISessionFactory {
static ISessionFactory actualFactory;
// Implement ISessionFactory and proxy calls to the actualFactory
}
这只是模拟单例模式。
我的问题:
- 这样做可以吗?
- 如果不行,为什么?应该怎么做?
- 这种方法有任何已知的性能问题吗?
更新:目前我通过自己的DI提供程序使用Castle Windsor,因此实际容器是可插拔的。
谢谢。