在控制器和存储库之间的Asp.net MVC中是否应该有服务层?由于存储库仅用于数据访问。一些业务逻辑泄漏到Controller中。如果经典Asp.Net客户端使用相同的操作,这可能会产生问题,因为我们必须在Controller中复制逻辑。
答案 0 :(得分:10)
如果您按照字母驱动设计进行操作,您会发现 3种服务类型(您不喜欢重载条款吗?)。
听起来您需要域名服务来封装/分享您的业务逻辑。
希望有所帮助!
答案 1 :(得分:4)
答案 2 :(得分:3)
我喜欢服务层在我的控制器和存储库之间提供的额外抽象级别。我觉得在履行单一责任原则方面有很大帮助。
答案 3 :(得分:3)
我试验了一下。我正在构建的应用程序非常CRUD-y,我的服务层最终暴露出与我的存储库几乎相同的接口。此外,大多数服务调用都没有在repo之上添加任何额外的逻辑,它们只是传递方法。服务层执行任何操作的唯一位置是在更新或插入新记录期间。 我认为在基于CRUD的系统中,服务层引起的摩擦大于增值。我最终扩展了我的业务模型类,以便将服务逻辑暴露为对模型的操作,从而使我的控制器方法保持精简和清洁。
然而,在一个更加行为驱动的系统中,我认为服务层可能会增加更多价值。
答案 4 :(得分:2)
我强烈建议您使用服务层,以便在不同的Web应用程序之间共享通用功能。这可能是架构已经存在的情况,您可能希望在前端添加一个新的mvc网站。
对于从头开始构建的简单架构,它可能有点过分。
答案 5 :(得分:1)
我喜欢在大多数情况下直接在控制器中安装存储库,并在我觉得泄漏的地方进行服务。我尝试使用丰富的域对象,但在那些逻辑不适合域类的情况下,我创建了一个服务。