依赖倒置原则,哪里放置接口(Dependency Inversion Principle and w

2019-08-04 20:20发布

我建在asp.net简单的MVC应用程序。 我想跟着依赖倒置原则 ,我不知道如果我这样做是正确的。

我目前正在认证系统上。 我有一个使用内部的身份验证服务的的AccountController。 认证器服务被注入到由构造喷射控制器。

public class AccountController : Controller
{
    private IAuthenticator _authenticator;

    public AccountController(IAuthenticator authenticator)
    {
        _authenticator = authenticator;
    }

    //
    // POST: /Account/Login

    [HttpPost]
    public ActionResult Login(LoginModel model, string redirectToUrl = null)
    {

     ...

    }

结构化的文件是这个:

但我想,如果我想要一个完全颠倒的控制器和它的依赖,我将要搬到旁边的控制器认证服务的接口之间的体面为。 事情是这样的:

通过这种方式,客户端 - 控制器 - 和服务的抽象会璧坐在同一个命名空间。 所以在服务的接口变化将来自客户端,将被传播到服务实现。 ,而不是以前的方式,其中,在服务发生变化传递给客户端。 依赖倒置 - 服务是依赖于客户端的。

我可以看到这样做的好处时,客户端和服务都在不同的组件,但我并不知道我是否应该这样做,当涉及到同样的组装。

让和我知道,如果我这样做是否正确,我应该使用的第一个文件结构或第二个。

谢谢,Asier

Answer 1:

代码文件的位置差别不大 - 这是组织你的源代码,只能自认倒霉控制反转做的事。

最重要的是,你是注入的依赖到控制器,你是。



文章来源: Dependency Inversion Principle and where to put the interfaces