我有一个具有 4 层的 N 层 Winforms 应用程序,如下所示:
表示层
应用层
领域层
基础设施层
我的应用程序层有一个产品服务类,用于产品的所有存储库相关操作。
产品服务类的接口文件属于应用层还是领域层?我问是因为我的存储库的接口文件是在域层中定义的,即使它们是在基础设施层中实现的。
提前致谢。
我有一个具有 4 层的 N 层 Winforms 应用程序,如下所示:
表示层
应用层
领域层
基础设施层
我的应用程序层有一个产品服务类,用于产品的所有存储库相关操作。
产品服务类的接口文件属于应用层还是领域层?我问是因为我的存储库的接口文件是在域层中定义的,即使它们是在基础设施层中实现的。
提前致谢。
服务理念可以属于任何一层。如果您要求应用程序服务,那么这些应该存在于应用程序层中。
另一方面,如果这些服务是直接访问域的服务,那么它们仍然是domain。也就是说,我希望在任何以Domain为前缀的项目中同时找到一个服务接口和一个或多个实现。
顺便说一句,该项目与软件层无关。它只是一个按某些标准对文件进行分组的组织单位。最重要的一点是你的流程应该考虑到控制反转来粘合层。
使用 DDD,通常建议使用 Dependency Inversion(SOLID 中的 D),因此依赖关系树应该是
Domain Layer | / \ / \ Presentation Layer Infrastructure Layer
因此,Presentation 和 Infrastructure “层”取决于您的域,而不是相反(通用版本也称为Hexagonal Architecture 或 Ports and Adapters)
应用层确实是您领域的一部分,因为它定义了用例应该如何工作。我从未在应用程序中使用(或见过)应用程序层,但我所做的是将应用程序服务放在同一个工件内的不同包中(这里的术语可能有点不同,因为我来自Java 背景)。