我是asp.net mvc的初学者。我有一个问题,我相信任何人都会在堆栈溢出方面帮助我)我无法理解在ASP.NET MVC中使用ASP.NET和DI是什么。你能帮帮我吗。也许我很笨,但我真的很想知道)有人能解释清楚吗?我将非常感激。
发布于 2014-02-18 00:29:02
特别是对于ASP.NET MVC,控制器有很多依赖项,DI和IoC容器可以通过接口将它们解耦,使它们可以用于单元测试,也更容易随着时间的推移而改变,而不会影响控制器。
例如,如果控制器依赖于日志记录提供程序、自定义配置提供程序和一两个域服务(它们本身依赖于数据管理器和可能的其他依赖项),那么如何对控制器进行单元测试--其中有这么多外部依赖项?
实现这一目标的方法是使其依赖项(即DI)和注入的依赖项使用配置问题(即IoC容器)。
考虑以下构造函数..。
public MyController()
{
_logger = new Logger();
_configProvider = new ConfigProvider();
_customerService = new CustomerService();
_orderService = new OrderService();
}
...versus...
public MyController(ILogger logger, IConfigProvider configProvider, ICustomerService customerService, IOrderService orderService)
{
_logger = logger;
_configProvider = configProvider;
_customerService = customerService;
_orderService = orderService;
}
.,它允许注入依赖项(例如单元测试中的模拟),可以使用IoC容器进行配置驱动。
从可测试性和可维护性的角度来看,这种差异是日夜的。
https://stackoverflow.com/questions/21847644
复制相似问题