ASP.NET MVC - 存储库/服务/控制器

Lia*_*amB 11 architecture asp.net-mvc

控制器是否需要直接调用存储库,还是应该始终通过服务层运行?还是有其他选择吗?

Mat*_*caj 11

如果你有一个服务层,并且你正在以一种将业务逻辑从存储库中抽象出来的方式使用它(就像你应该使用服务层那样)那么不,你的控制器应该只调用服务方法.然后,服务层将成为与repo的耦合.

进一步对Mayo的回答:模型是将在整个应用程序(repo,service和UI/controllers)中传递的数据类,因此UI/web层应该像其他层一样"操作"它们.

我认为如果你在Fowler的定义现代aspnet mvc 自适应的上下文中实现一个服务层,那么你应该将你的控制器动作设计为非常小而轻的方法,从服务层调用"多肉"的业务逻辑.

编辑:我想我是不明确的:我不是说一个服务层是唯一的选择,只是想回答有关在您的情况下,问题的部分使用一个服务层.同意,服务层并不总是必要的,特别是对于较小的项目.


UpT*_*eek 8

您并不总是需要服务层 - 在简单的情况下,它只是过度设计解决方案.控制器调用存储库很好.但是,如果您看到您的控制器充满逻辑,或者您正在重复控制器操作,那么请查看在控制器和存储库之间放置一个服务,并将一些逻辑从控制器移到服务层.