我曾开发过几个尝试遵守 DDD 原则的应用程序,我注意到我们最终会遇到服务层和存储库之间存在重复的情况,感觉就像代码异味。
对于服务层中的大多数操作,它似乎是直接映射到 CRUD 操作、GetAll、GetById、Create、Delete 等。架构的流程在以下几行中:我有一个控制器调用服务层调用一个存储库,该存储库调用一个与后端对话的ORM ..
因此,例如GetAll将同时存在于 SL 和存储库中。现在,如果我们有一个更改/业务要求 GetAll 应该忽略某些项目,我应该怎么做,我应该在存储库中忽略这些,还是应该进入服务层的业务逻辑?如果我们只是有一个直接调用 ORM 的服务层,生活会不会更轻松?
总结一下:我知道服务层可以抽象一些业务逻辑,但是当 - 在大多数情况下 - 它正在处理简单的 CRUD 操作时,摆脱存储库不是更容易吗?但是,如果 SL还包含一些具有复杂业务逻辑的方法,这些方法是否应该通过存储库?从良好的设计角度来看,我应该支持一致性并始终通过存储库还是保持简单并且仅在存储库不是简单的一对一映射到 CRUD 操作时才使用它。
PS:我意识到似乎有类似的问题,但没有找到任何令人满意的答案