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