【发布时间】:2020-08-11 01:36:29
【问题描述】:
我认为最好在“应用程序”层(业务)上编写工作单元的接口,并将它们的实现写在“持久性”层(DAL)上。目标是使层尽可能地解耦。
想象一下您决定将 DAL 从 EF 核心更改为 Dapper 的场景。这种转变如何不那么痛苦?让接口发音为“我需要这个查询、这个和那个,以便开展我的业务”并将其映射到新的数据访问层不是更好吗?
【问题讨论】:
-
是的,您应该在应该独立于基础设施(即业务层)的层中声明接口。您通过接口定义合同,较低级别的组件应实现这些接口。有了它,您可以确保在您的业务层中,您只依赖于在该层中定义好的东西。例如,您在业务(域)层中定义了一个存储库接口,并且该接口的实现在持久层中定义。
标签: separation-of-concerns clean-architecture decoupling