我是asp.net mvc的初学者。我有一个问题,我相信任何人都可以帮助我完成stackoverflow)我无法理解在ASP.NET MVC中使用IoC和DI的原因。你能帮助我吗。也许我是傻瓜,但我真的想知道它吗?Ccan有人解释清楚?我会很感激。
答案 0 :(得分:4)
对于ASP.NET MVC,控制器有很多依赖关系,DI和IoC容器可以通过接口解耦,使它们可以模拟单元测试,也可以更容易地随时间更改,而不会影响控制器。
例如,如果控制器依赖于日志记录提供程序,自定义配置提供程序和一两个域服务(它们本身依赖于数据管理器和可能的其他依赖项),那么如何对控制器进行单元测试 - 具有如此多的外部控制器依赖
实现此目的的方法是使其依赖性可注入(即DI)和注入的依赖项使用配置问题(即IoC容器)。
考虑以下构造函数......
public MyController()
{
_logger = new Logger();
_configProvider = new ConfigProvider();
_customerService = new CustomerService();
_orderService = new OrderService();
}
...与...
public MyController(ILogger logger, IConfigProvider configProvider, ICustomerService customerService, IOrderService orderService)
{
_logger = logger;
_configProvider = configProvider;
_customerService = customerService;
_orderService = orderService;
}
...,允许注入依赖项(例如单元测试中的模拟),可以使用IoC容器进行配置驱动。
从可测试性和可维护性的角度来看,差异是日夜的。