应用服务属于领域层还是应用层?

Does application services belong to domain layer or application layer?

我有一个 N 层 Winforms 应用程序,它有 4 个层,如下所示:

表示层

应用层

领域层

基础设施层

我的应用程序层有一个产品服务 class,用于产品的所有存储库相关操作。

产品服务的接口文件class属于应用层还是领域层?我问是因为我的存储库的接口文件是在域层中定义的,即使它们是在基础结构层中实现的。

提前致谢。

服务概念可以属于任何层。如果你要求应用服务,那么这些应该在应用层。

另一方面,如果这些服务是直接访问域的服务,那么它们仍然是。也就是说,我希望在任何以 Domain.

为前缀的项目中找到服务接口和一个或多个实现

顺便说一句,该项目 与软件层无关。它只是一个根据某些标准对文件进行分组的组织单元。最重要的一点是你的流程应该考虑到粘合层的控制反转。

对于DDD,通常推荐使用Dependency Inversion(SOLID中的D),所以依赖的tree应该是

                      Domain Layer
                            |
                           / \ 
                          /   \
        Presentation Layer     Infrastructure Layer

因此表示和基础结构 "layers" 取决于您的域,而不是相反(通用版本也称为 Hexagonal Architecture or Ports and Adapters

应用层确实是您领域的一部分,因为它定义了用例应该如何工作。我从未在应用程序中使用(或见过)应用程序层,但我所做的是将应用程序服务放在同一工件内的不同 package 中(这里的术语可能有点不同,因为我来自 Java 背景)。