【问题标题】:2010: ASP.NET MVC IoC/DI - Structuremap vs Ninject, etc2010:ASP.NET MVC IoC/DI - Structuremap vs Ninject 等
【发布时间】:2010-12-12 07:39:22
【问题描述】:

这个问题在 2008 年是 answered。现在是 2010 年底。任何变化?对于将永久维护的非常大的项目,建议使用哪些 IOC/DI 框架?

该项目的特点包括:

  1. WCF Web 服务。
  2. OData 暴露器。
  3. 适用于各种移动设备的特殊视图。
  4. 使用 POCO 的存储库模式。
  5. 实体框架。

项目结构:

  1. 项目域(数据库、存储库)
  2. 项目服务(逻辑)
  3. Project Web(视图、控制器、服务端点等)

【问题讨论】:

    标签: asp.net-mvc dependency-injection inversion-of-control


    【解决方案1】:

    我个人的偏好仍然是Ninject。优秀的文档,易于使用,非常简单,并且可以完成工作。它是我们所有工作项目中的 IoC 选择,并且是一种享受。

    旁注 RE 的东西将永远持续下去。将您的 IoC 包裹在外观中,以便您可以在路上将其更换(我们使用 IoC、ORM 等进行此操作,以防几年后我们必须进行更改)。

    【讨论】:

    • +1 for Ninject,我已经尝试过城堡,团结,并认为 ninject 是最好的记录,这非常重要!
    • 我们只需要同意不同意。我个人更喜欢调用一个外观,它向我抛出适当的对象而不是显式引用我的 DI 容器的方法——这与我通过存储库而不是直接使用 NHibernate 对象和方法的原因相同——特别是,它使交换东西变得很麻烦容易得多,因为我只需要在一个位置更改(并可能适应)事物。
    • @Bob Palmer - 任何关于如何包装 IoC 的文章的链接?
    • @Bob Palmer, @Shawn Mclean:如果你调用容器,你是在做服务定位,而不是控制反转。你失去了许多脱钩的好处。
    • 我同意毛里西奥的观点。您不必包装容器。但是你应该让你的业务代码没有对容器的引用。唯一需要了解容器的类是定义绑定的模块,并且对象的极少数工厂具有与使用它们的对象不同的生命周期。这样,您可以通过为新容器重写模块和工厂来非常快速地更换容器。
    【解决方案2】:

    我个人使用Spring.NET。除了可用于 DI 的简单对象容器之外,该框架还有许多其他功能。

    【讨论】:

    • 我听说过有关 xml 配置的坏消息,而且由于不是强类型,它们很容易出错。
    • @Shawn:我更喜欢基于代码的配置而不是 XML 配置,但是你总是可以编写一个单元测试来测试你的 DI 的配置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-21
    • 2011-08-04
    • 2010-11-06
    • 1970-01-01
    相关资源
    最近更新 更多