依赖注入是否必须在asp.net MVC中使用?

时间:2013-08-27 12:29:13

标签: asp.net-mvc dependency-injection

我目前正在查看多个教程(和阅读书籍)以开始使用ASP.NET MVC。

我看到ninject(或类似的)被广泛用于实现依赖注入,据我所知,这里的主要问题是我需要的类的资源分配。

我们希望确保例如我们只有一个repo对象的实例。

我需要先学习第一件事,所以我有兴趣知道如何在不使用DI技术的情况下创建ASP.NET MVC,并且就我的对象资源而言仍然是正确的

更多信息:

我已经制作了一些winforms应用程序。这些应用程序使用业务层DLL(BLL)。这个BLL可以访问我的DAL DLL(普通ADO.NET)。他们工作得很好..

不,我想使用SAME BLL到MVC应用程序。

是否注射?

没有注射实施?

我只是在我的控制器构造函数中创建了BLL对象吗?

2 个答案:

答案 0 :(得分:3)

ASP.NET MVC根本不需要您使用依赖注入。如果所有控制器都有默认构造函数,它将完美地工作。另一方面,您将负责创建对象并管理其生命周期。如果需要为应用程序创建一个存储库对象,则必须手动实现其生命周期(使用静态变量或Singleton模式)。

如果您关心测试,使用依赖注入肯定会帮助您设计更多可测试和可重用的对象。您可以轻松地在测试代码中使用测试双精度替换依赖项,并让DI容器在运行时注入实际的实现。

如果您确定不使用它,请确保所有控制器都具有默认构造函数。您不需要任何配置。

答案 1 :(得分:1)

依赖注入不是使用ASP.net MVC的必要条件。没有它你绝对可以构建一个MVC应用程序。

如果您想对您的应用程序执行单元测试,它会派上用场。如果您想在控制器中对一个动作进行单元测试,如果您设置了DI,那么您可以模拟控制器构造函数中包含的依赖项(DI在应用程序运行时负责)并设置响应当他们被行动召唤时返回。

如果您不使用依赖注入,这将更难以实现(如果不是不可能)。在这种情况下,如果您想使用单元测试,那么编写动作的纯单元测试将非常困难,因为您将无法轻松地模拟测试的服务和数据访问层。

正如您所写的那样,DI层还可以确保您只注射一个存储库对象实例,等等。