控制器是否需要直接调用存储库,还是应该始终运行服务层?还是有其他选择?
解决方法
如果你有一个服务层,而你的使用方式是将业务逻辑从存储库中抽象出来(就像你应该使用一个服务层)那么,那么你的控制器只能调用这个服务方法.服务层然后将是与repo的耦合.
除了Mayo的答案之外,该模型是将在整个应用程序(repo,服务和UI /控制器)中传递的数据类,所以UI / Web层应该像其他层一样在其上运行.
我认为,如果您在Fowler’s definition和modern aspnet mvc adaptions的上下文中实现服务层,那么您应该将控制器操作设计为非常小巧轻便的方法,从服务层调用“肉”的业务逻辑.
编辑:我想我不清楚:我不是说有一个服务层是唯一的选择,只是试图回答与您使用服务层的情况有关的部分问题.同意,服务层并不总是必需的,特别是对于较小的项目.