什么是IOC容器?

什么是IOC/DI框架?

为什么我们需要IOC/DI的框架?

IOC/DI和AOP之间有任何关系吗?

关于IOC和AOP的spring.net/nionject是什么?

有帮助吗?

解决方案

JMSA,

詹姆斯·科瓦克斯(James Kovacs)写了一篇很棒的文章,涵盖了您的许多问题,我建议阅读它 这里

Spring.net,Ninject,Unity,Castle Windsor,AutoFac都是可以以不同方式配置的IOC容器,其中许多也确实支持AOP。

IOC / DI的框架很有用,因为它们提供了标准机制,例如,如果您雇用新开发人员,则更容易说,我们使用此框架并将其传递给教程 /帮助指南。同时,这些框架由大型社区 /公司进行了尝试和测试。

让我知道您的任何问题是否在阅读文章和上述答案后仍未得到答复,我将尽力提供进一步的帮助。

其他提示

从语义的角度来看...

依赖注射本身意味着 依赖性, ,即是 必需的 用于施工/使用(应用程序的“核心问题”)。例如,没有发动机的汽车不是汽车。

方面被描述为对应用程序的核心关注点进行了交叉。这意味着与核心关注点分开,也不重要(您可以将它们视为“良好对手”)。由于应用程序可以在没有方面运行,因此它们真的依赖性吗?例如,即使没有固定器,汽车仍然是汽车。

(当然,这是从理论上的角度来看。在现实世界中,诸如安全往往对可销售产品的存在与核心本身一样至关重要。)

因此,在实践中,di可以用来实施方面,我不会称之为true di。这来自专门使用构造函数注射的人。

马丁·福勒(Martin Fowler)有一篇很好的文章 这里 关于控制和依赖注射的倒置的含义。

Spring.NET用法AOP详细描述 这里. 。我更熟悉基于Java的Spring版本,因此我不能完全确定地说Spring.net当前仅支持基于代理的AOP。

也就是说,要建议的类必须实现接口。 Spring将创建一个动态代理,该代理实现此接口并委派给原始目标实例。

尽管确实说明:

在将来的版本中,我们将使用继承实施代理,这将使您能够在没有接口的情况下代理类,并将删除一些无法使用基于构图的代理无法解决的原始参考问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top