【发布时间】:2014-09-06 10:48:36
【问题描述】:
我需要在我的 Web 应用程序中实现 DI。这不仅是 Web 应用程序,而且还支持业务层类(单独的项目)和数据访问层类(单独的项目)。最好的工具是什么,我知道 MVC 内置了一些东西,但我的业务逻辑层和数据访问层没有使用 MVC。
【问题讨论】:
-
MVC目前没有内置任何依赖注入框架,你“知道”错了。
我需要在我的 Web 应用程序中实现 DI。这不仅是 Web 应用程序,而且还支持业务层类(单独的项目)和数据访问层类(单独的项目)。最好的工具是什么,我知道 MVC 内置了一些东西,但我的业务逻辑层和数据访问层没有使用 MVC。
【问题讨论】:
首先,我建议您阅读有关依赖注入的更多信息。它不是一个框架(尽管有依赖注入框架),它是一种设计模式。您可以在没有任何框架的情况下实现 DI。该框架只是为您提供了更多功能。
其次,MVC 不提供 DI 框架,尽管它确实具有将框架引入 MVC 的挂钩。
第三,依赖注入框架是在应用程序级别配置的(在您的情况下是 MVC)。你的业务和数据层是独立的项目并不重要,它们仍然被你的应用层使用,而应用层是必须有 DI 框架的那个,因为所有的对象都是从那里创建的(这被称为组合根)。
您可以使用任何您想要的 DI 框架。没有“最好的工具”。他们都做同样的事情,只是以不同的方式做,所以归结为个人喜好。
【讨论】:
我完全同意 Erik Funkenbusch 的观点。 DI 不是工具,您应该从应用模式开始,而不是使用工具。如果您开始使用工具而不应用模式,您将成为in worse place than you started。
也就是说,.NET 有很多 DI 容器,但前 6 个是:
但您可以在 this list 上看到更多内容。
【讨论】: