大家好,
关于Unity Lifetime Managers的问题,有许多文章。但我还没有找到有人给出一个“在这些情况下您应该始终使用X”的好建议。让我描述一下我的应用程序:我有一个ASP.NET MVC 4 Web应用程序。我有一个包含3个项目的Visual Studio解决方案,其中包括我的“核心”项目(其中包含所有的EF内容),一个测试项目和MVC Web项目。我正在使用Unity进行依赖注入,现在的代码如下:
// Context
container.RegisterType<IDatabaseFactory, DatabaseFactory>(
new ContainerControlledLifetimeManager();
container.RegisterType<UnitOfWork>(
new ContainerControlledLifetimeManager());
然而,我注意到我的上下文没有在每个新的Web请求中重新创建,这是我认为我想要的(如果我这种做法是错误的,请告诉我)。我很难分析下面列出的网站中的所有信息,并阅读了许多人创建自己的名为PerHttpRequestLifetimeManager的类来处理这个问题。
那么,这里真正的最佳实践是什么呢?
- 通过Microsoft的开发者网络理解Lifetime Managers - http://msdn.microsoft.com/en-us/library/ff660872(v=PandP.20).aspx
- 使用CodeProject进行MVC DI和Unity with Lifetime Manager - http://www.codeproject.com/Articles/424743/MVC-DI-Unity-with-Lifetime-Manager
- 通过Shiju Varghese的博客学习ASP.NET MVC Tip: 使用Unity Application Block进行依赖注入 - http://weblogs.asp.net/shijuvarghese/archive/2008/10/24/asp-net-mvc-tip-dependency-injection-with-unity-application-block.aspx
- 在Unity中通过Stack Overflow使用MVC,EF - DataContext 单例实例Per-Web-Request - MVC, EF - DataContext singleton instance Per-Web-Request in Unity
- 通过Stack Overflow在多个类型之间注入相同的DataContext实例 - Inject same DataContext instance across several types with Unity