Unity.Mvc3 对比 Unity.Mvc

Unity.Mvc3 vs Unity.Mvc

将 Unity.Mvc3 与 Mvc 3 应用程序一起使用,我可以按如下方式注册我的 IDummyService

container.RegisterType<IDummyService, DummyService>(new HierarchicalLifetimeManager());

在每个 Web 请求中,都会创建我的 IDummyService 的一个新实例(如本 article 中所述),但是自从我将 Mvc 3 升级到 Mvc 4 和 hense Unity.Mvc从 3 到 Unity.Mvc,将创建单个实例并将其用于所有 Web 请求,直到重新启动应用程序。基本上,当使用 HierarchicalLifetimeManager 时,IDummyService 是 Mvc 4 应用程序中的单例。对我来说,很难相信这是 Unity.Mvc.

中的新行为

对此有更好的解释吗?

Unity.Mvc3 and Unity.Mvc 由两个不同的组织创建并具有不同的实现。

Unity.Mvc3 为每个 Web 请求创建一个子容器。这适用于内置 HierarchicalLifetimeManager

Unity.Mvc 没有创建子容器,而是选择创建一个名为 PerRequestLifetimeManager 的新 LifetimeManager。