asp.net-mvc - IWindsorContainer 与 IUnityContainer 有什么区别?

标签 asp.net-mvc entity-framework fluent-nhibernate nhibernate-mapping

我在不同的项目中使用过 IWindsorContainer 和 IUnityContainer 之间的两种类型的容器来进行服务和接口(interface)绑定(bind)。但是我不太确定有什么区别?它们有相同的功能吗?如果是,那么在现有的情况下还需要开发另一个吗?或者他们有一些区别吗?如果是,那是什么?我将使用哪个目的而不是哪个目的?我有一个小documentation面对这种困惑,但我并没有安静地捕获它。因此,如果您让我知道,我将不胜感激。值得一提的是,我在这里使用 NHibernet 映射。

最佳答案

我使用过这两个容器,它们之间的巨大区别是,多年来使用每个容器都是 UnityContainer 由团队管理,并且仍在扩展。 Windsor 容器在返回实际错误方面并不是很好。 UnityContainer 有很棒的文档,并且使用 nuget 或其他存储库管理器安装起来非常简单。

这就是我的意思...如果你看看如何使用他们的代码,https://github.com/castleproject/Windsor/blob/master/docs/README.md ,例如温莎就非常困惑。

public void Install(IWindsorContainer container, IConfigurationStore store)
    {
        container.Register(Classes.FromThisAssembly()
                            .Where(Component.IsInSameNamespaceAs<King>())
                            .WithService.DefaultInterfaces()
                            .LifestyleTransient());
    }

如果你想看看统一性,https://github.com/unitycontainer/unity/blob/master/quickstarts/CS/EventBroker/Src/Stoplight/Program.cs ,通过以不同的方式注册它们,发生的事情会变得更加清楚。使用 Unity,当您陷入困境时,错误代码也会更加清晰。

IUnityContainer container = new UnityContainer()

            .AddNewExtension<SimpleEventBrokerExtension>()

            .RegisterType<ILogger, TraceLogger>()

            .RegisterType<IStoplightTimer, RealTimeTimer>();

关于asp.net-mvc - IWindsorContainer 与 IUnityContainer 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42336702/

相关文章:

javascript - 我可以从 kendo UI MVC 项目中删除什么

c# - ASP.Net MVC4 成员(member)资格

c# - ASP.NET 动态数据看不到部分元数据 "buddy"类

c# - 在asp.net mvc3 (C#)中执行sql语句

c# - 在 NHibernate 中设置参数时为 “ORA-01461: can bind a LONG value only for insert into a LONG column”

c# - Fluent NHibernate FluentMappings.AddFromAssemblyOf<> 问题

asp.net-mvc - 如何成功配置 Common.Logging?

c# - 为什么尾随 %20(在本例中为有效数据)会终止 asp.net mvc 路由

entity-framework - Entity Framework 或 SqlDataReader

nhibernate - 当具有相同术语的 HQL 选择有效时,为什么此 HQL 删除失败?