MVC3设计 - 存储库模式和服务层

Ext*_*kun 8 asp.net-mvc service design-patterns repository

我已经阅读了几本关于MVC的书籍和文章,并且遇到了存储库模式和服务层.

控制器是否应该能够通过存储库模式获取实体,还是必须从服务层检索数据?

编辑:我在服务层中有代码如下所示

public UserInfo GetModel(int userInfoID)
{
    return userInfoRepo.Get(userInfoID);
}

public UserInfo GetUserByPortalID(string portalID)
{
    return userInfoRepo.GetByPortalID(portalID);
}

public UserInfo GetModelByUserName(string username)
{
    return userInfoRepo.GetByUserName(username);
}
Run Code Online (Sandbox Code Playgroud)

如果服务中的方法只调用存储库中的另一个方法,是否需要让控制器通过该服务?

Mar*_*ann 11

在分层应用程序体系结构中,有一条基本规则,即必须永远不要绕过层.如果直接从控制器查询存储库,则会违反该规则.

所以呢?你可以说.如果服务层没有添加任何值,该怎么办?好吧,它可能在未来......

您可以选择中断规则,但之后它将不再是分层应用程序.这可能也没关系 - 还有其他好的(甚至更好的)应用程序架构可用,但我认为首先你应该对整体架构做出决定,然后你坚持做出这个决定.否则你最终会得到意大利面条代码 - 当它是分层应用程序时我们称之为烤宽面条 :)