3

我正在 asp.net 中构建一个简单的 MVC 应用程序。我想遵循依赖倒置原则,不知道自己做得对不对。

我目前正在研究身份验证系统。我有一个 AccountController,它在里面使用 Authenticator 服务。Authenticator 服务通过构造函数注入注入到控制器中。

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)
    {

     ...

    }

文件的结构是这样的:

在此处输入图像描述

但我在想,如果我想完全颠倒控制器及其依赖项之间的规范,我将不得不将身份验证服务的接口移动到控制器旁边。像这样的东西:

在此处输入图像描述

这样,客户端 - 控制器 - 和服务的抽象将位于同一个命名空间中。因此,服务接口的变化将来自客户端,并将传播到服务实现。而不是前一种方式,服务中发生的变化被传播到客户端。依赖是倒置的——服务依赖于客户端。

当客户端和服务位于不同的程序集中时,我可以看到这样做的好处,但我不确定当涉及到同一个程序集时是否应该这样做。

让我知道我是否正确执行此操作以及我应该使用第一个文件结构还是第二个文件结构。

谢谢, 阿西尔

4

1 回答 1

10

代码文件的位置几乎没有区别 - 这是组织源代码的问题,与控制反转无关。

重要的是您将依赖项注入到控制器中,您就是这样。

于 2012-12-27T16:38:45.927 回答