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