我已经开始学习 DDD 并且我有几个问题,以便我可以提高对它的理解。
所以典型的 DDD 架构是这样的
领域层 => 该层应该与技术无关,并且应该包含以下内容
Domain.Entities(与持久层实体不同,应该只包含验证规则?任何其他域业务应该去这里吗?)
Domain.ValueObjects(不需要在域中唯一的对象,应该只包含验证规则)
Domain.Services(该层应包含业务逻辑,尽管与聚合相关,但不适合聚合本身。需要多个 Domain.Entities 和/或 Domain.ValueObjects 协作的操作的编排器)
Domain.Factories(这个层不知何故还没有完全理解,我的意思是它的责任是创建聚合或什么?)它纯粹是工厂设计模式还是与它不同?
Domain.Repositories(这一层也是模棱两可的,除了我知道这一层负责与外部服务通信,它应该处理什么类型的业务逻辑?)
反腐败层(这一层应该作为域层和应用层之间的网关,它应该负责将响应和请求从一层转换到另一层)
应用层 => 只能用于以客户端易于理解的格式公开数据。过滤在这一层完成(Linq-To-SQL)/(Linq-To-Entity)
客户端(最后一层)=> 应该没有任何逻辑,只公开应用层服务提供的模型。
我看到的其他图层
Shared.Kernel(跨多个限界上下文共享的Domain.ValueObjects / Domain.Entites(不是AggregateRoots))
Infrastructure.Domain.Common(在整个域中共享,例如 AggregateRoot、BaseEntity、BaseValueObject 等)
Infrastructure.DataAccess.Provider(例如 EntityFramework / nHibernate/ MongoDriver ,该层应该与谁通信?应用层?