【问题标题】:Are "Dependency Injection Container" and "Inversion of Control Container" one and the same thing?“依赖注入容器”和“控制容器反转”是一回事吗?
【发布时间】:2015-05-02 20:58:37
【问题描述】:

在我读过很多关于依赖注入容器的文章中,还有很多人谈到了 IoC 容器。虽然肯定有一些地方同时提到了两者,但我还没有遇到过。那么问题来了:这两者之间有什么关系?它们是一样的吗?或者是另一个的实现?还是……?

【问题讨论】:

    标签: dependency-injection inversion-of-control ioc-container


    【解决方案1】:

    我会说它们是两个不同的短语,指的是同一件事,我会冒昧地提出“IOC Container”可能是两者中更惯用/更广泛使用的一个。

    我经常听到“依赖注入框架”*而不是“容器”这句话,我想这就是大多数人说“依赖注入容器”时的实际意思>" - 请记住,所有 DI 框架都有一个“容器”,它是保存类型映射的对象,并且是在运行时解析对象图以进行注入的工作的入口点。

    例如,在Ninject 依赖注入框架中,StandardKernel 是“容器”。

    我希望这没有让你更加困惑:)

    更新

    *正如 Steven 所指出的,这里的“框架”一词确实可能不准确,而“库”一词可能更正确。无论如何,称它们为“IOC 容器”是不会错的。

    【讨论】:

    • 但其实“框架”这个词的使用是不正确的。 IOC 容器是库;它们只是我们调用的工具,而不是像 ASP.NET、WCF 和 WPF 这样在我们的代码运行之前运行的框架。
    • @Steven - 公平点虽然我不完全同意我不想进入关于语义的争论,所以我已经相应地更新了答案。
    • @Konstantin :“惯用语”-“特定群体或人的风格或方式特有或特征”Source。在这种情况下,特定的人群是程序员。如果您觉得有更好的词,请告诉我,我很乐意更新答案(或者您可以提出修改建议)。
    • @Stephen 作为一个非本地人(既不是英语,也不是这群在一个句子中使用 IoC 容器和诸如“idomatic”之类的词的精英程序员)演讲者,我会满足于“更正确/”适当”或“更广泛使用”。但在我的下一次工作面试中,我会使用“惯用语”。 :) 谢谢
    猜你喜欢
    • 1970-01-01
    • 2012-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-06
    • 1970-01-01
    • 1970-01-01
    • 2014-09-15
    相关资源
    最近更新 更多