代码之家  ›  专栏  ›  技术社区  ›  Qwertie

命名一个简单的依赖注入框架[关闭]

  •  9
  • Qwertie  · 技术社区  · 14 年前

    我想第一次尝试在一个小的、但正在增长的项目中使用DI/IOC框架,我不想通过引入大量的依赖关系来干扰项目。项目本身的一部分目的是在其他项目中用作库,我不想在管理额外的依赖关系方面给用户带来麻烦。这也是一个品味问题——我觉得组件的大小应该与我实际需要的服务量成比例。我不喜欢将一个庞大的组件与它自己的依赖项结合起来,只使用它的一小部分。

    因此,对于.NET,是否有一个小的DI/IOC框架编译成一个除了标准库之外没有依赖关系的DLL,它(如果需要)可以直接嵌入到使用它的程序集中,并且强调基于代码的/Fluent(而不是XML)连接?它不能要求.NET Framework 4.0。

    7 回复  |  直到 14 年前
        1
  •  5
  •   CubanX    14 年前

    我和你们对国际奥委会框架的看法是一样的。我一直在使用IOC,只是不太需要框架。

    说了这句话,如果我去接的话,我会用的是 AutoFac

    它很简单,容易掌握,而且感觉很轻。

        2
  •  4
  •   Dave White John Alexiou    14 年前

    除了你看到的9个项目外,我还建议你 微软的DI框架 , Unity .

        3
  •  4
  •   Roman    14 年前

    您将引入的任何框架最终都将成为应用程序的依赖项。此外,人们对轻量级的定义也各不相同。看一看 Unity StructureMap 或者温莎城堡,因为他们更受欢迎。斯科特·汉塞尔曼有一个完整的名单, here . 你挑吧。

        4
  •  3
  •   Jordão    14 年前

    看一看 Ninject .

        5
  •  1
  •   Jordão    14 年前

    尝试 StructureMap .

    核心 StructureMap.dll 很小。

        6
  •  1
  •   Matt    14 年前

    examples on the web 关于编写自己的容器,尽管它们非常基础,并且缺少由更健壮的框架提供的特性。

        7
  •  0
  •   Josh Sterling    14 年前

    我使用的是一个相当大的系统,我们手动注入了所有东西。我们利用抽象的工厂模式来整理大部分的注入/布线,结果很好。

    DI框架非常丰富。在进行额外的外部依赖之前,需要花一些时间考虑应用不同/新模式是否可以解决您的问题。

    编辑:(可能有偏见/不公正)我没有使用DI框架的原因:

    • 如果您使用DI框架,那么您必须将DI框架与您的软件一起发送。对于一些人来说,这可能是一个阻碍展示的因素,而其他人可能不得不争论额外依赖的优点。
    • 您仍然需要构建构造函数来获取依赖项
    • 您仍然需要告诉(或者至少是提示)DI框架应该使用什么。唯一的主要区别是你使用的是DI工厂而不是你自己的工厂。

    至于建立那个工厂,大多数重构工具只需很少的按键就可以为您完成90%的工作。