我目前正在查看多个教程(和阅读书籍)以开始使用ASP.NET MVC。
我看到ninject(或类似的)被广泛用于实现依赖注入,据我所知,这里的主要问题是我需要的类的资源分配。
我们希望确保例如我们只有一个repo对象的实例。
我需要先学习第一件事,所以我有兴趣知道如何在不使用DI技术的情况下创建ASP.NET MVC,并且就我的对象资源而言仍然是正确的
更多信息:
我已经制作了一些winforms应用程序。这些应用程序使用业务层DLL(BLL)。这个BLL可以访问我的DAL DLL(普通ADO.NET)。他们工作得很好..
不,我想使用SAME BLL到MVC应用程序。
是否注射?
没有注射实施?
我只是在我的控制器构造函数中创建了BLL对象吗?
答案 0 :(得分:3)
ASP.NET MVC根本不需要您使用依赖注入。如果所有控制器都有默认构造函数,它将完美地工作。另一方面,您将负责创建对象并管理其生命周期。如果需要为应用程序创建一个存储库对象,则必须手动实现其生命周期(使用静态变量或Singleton模式)。
如果您关心测试,使用依赖注入肯定会帮助您设计更多可测试和可重用的对象。您可以轻松地在测试代码中使用测试双精度替换依赖项,并让DI容器在运行时注入实际的实现。
如果您确定不使用它,请确保所有控制器都具有默认构造函数。您不需要任何配置。
答案 1 :(得分:1)
依赖注入不是使用ASP.net MVC的必要条件。没有它你绝对可以构建一个MVC应用程序。
如果您想对您的应用程序执行单元测试,它会派上用场。如果您想在控制器中对一个动作进行单元测试,如果您设置了DI,那么您可以模拟控制器构造函数中包含的依赖项(DI在应用程序运行时负责)并设置响应当他们被行动召唤时返回。
如果您不使用依赖注入,这将更难以实现(如果不是不可能)。在这种情况下,如果您想使用单元测试,那么编写动作的纯单元测试将非常困难,因为您将无法轻松地模拟测试的服务和数据访问层。
正如您所写的那样,DI层还可以确保您只注射一个存储库对象实例,等等。