应用程序服务是属于域层还是应用程序层?

时间:2016-02-27 14:35:35

标签: c# domain-driven-design n-layer application-layer

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

表示层

应用层

域层

基础设施层

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

Product Services类的接口文件是否属于应用层或域层?我问,因为我的存储库的接口文件是在域层中定义的,即使它们是在基础架构层中实现的。

提前致谢。

2 个答案:

答案 0 :(得分:2)

服务理念可以属于任何层。如果您要求应用程序服务,那么这些应该存在于应用程序层中。

另一方面,如果这些服务是直接访问域的服务,那么它们仍然是。也就是说,我希望在任何以 Domain 为前缀的项目中找到服务接口和一个或多个实现。

BTW,项目与软件层无关。它只是按一些标准对文件进行分组的组织单位。最重要的一点是,您的流程应该考虑到控制反转以粘合图层。

答案 1 :(得分:0)

使用DDD,通常建议使用依赖性反转(SOLID中的D),因此依赖项的应该

                      Domain Layer
                            |
                           / \ 
                          /   \
        Presentation Layer     Infrastructure Layer

所以演示和基础设施"层"取决于您的域名,而不是相反(其通用版本也称为Hexagonal Architecture or Ports and Adapters

应用层确实是您域的一部分,因为它定义了用例应该如何工作。我从未在应用程序中使用(或看到)应用程序层,但我所做的是将Application Services放在同一个人工制品内的不同中(术语)这里可能有点不同,因为我来自Java背景。)