我正在基于DDD原理创建一个项目。在阅读互联网上的资源时,我想到了以下内容,这有意义吗?特别是像这样的部分:
Shared.Core
个项目,该项目在有限的上下文之间共享.Data
个项目Rest.API
个项目,该项目取决于Shared.Core
和FeatureX.Core
个项目。下表显示了我创建的项目及其依赖项,->
表示“依赖于”。
Rest.API -> Feature1.Core -> Feature1.Data
-> Shared.Core
-> Feature2.Core -> Feature2.Data
-> Shared.Core
-> Shared.Core
答案 0 :(得分:1)
您可以根据需要命名文件夹,但建议:
您有一个模块/命名空间/程序包/目录,该模块/命名空间不依赖任何基础架构或技术(例如REST,SQL,NOSQL,MONGO等),而仅依赖您的业务逻辑;这里有集合,值对象,域服务,Sagas等。每个有界上下文至少一个;我们将其命名为Domain层。它可能不依赖于其他域层。它应该没有副作用,易于测试。
您可以在域层内部使用共享组件,但前提是它们是无状态且通用的,例如日期时间操作库,列表,堆栈等。
反腐败层。它们最有可能取决于多个域层。
其他演示文稿,特定于基础结构和技术的库和框架,IO适配器和端口应与其他层明确分开。可能取决于域层。
因此,要映射到您已经有
Rest.API -> Feature1.Domain -> Shared.Lib
-> Feature1.Infrastructure
-> Feature1.ACL -> Feature1.Infrastructure
-> Feature2.Domain -> Shared.Lib
-> Feature2.Infrastructure
-> Shared.Lib
带有以下注释: