2020-12-09 22:08:06
DDD分层架构是一种基于领域驱动设计(Domain Driven Design,DDD)思想的软件架构模式。
一、DDD的基本概念DDD全名为领域驱动设计,它代表的是一种高质量的软件开发方法,是一种开发复杂软件的系统化的方法学和思想。其核心特点包括:
分层架构是将软件模块按照水平切分的方式分成多个层,一个系统由多层组成,每层由多个模块组成。它是一种代码的开发架构,是针对代码开发的。
最初的三层架构就是表现层(UI)、业务逻辑层(BLL,也称作领域层)、数据访问层(DAL),分别负责前端开发包括请求处理和返回、业务逻辑开发和底层数据库操作和数据保存。
三、DDD分层架构的详细介绍DDD分层架构是在最初的三层架构进化扩展而来的。它是在假设系统高度复杂的情况下的一种设计思想,这种分层架构尽可能的对所有可能的情况进行了全面的考虑。它分为用户接口层、应用层、领域层、基础层。
实体:拥有唯一标识符,且标识符在经历过各种状态变更后仍能保持一致。领域模型中的实体是多个属性、操作或行为的载体。DDD中使用的是充血模型,即实体中包含属性与行为。
值对象:通过对象属性值来识别的对象,它将多个相关属性组合为一个概念整体。在DDD中用来描述领域的特定方面,并且是一个没有标识符的对象。值对象所描述的领域只的这个东西它是不可变的,只能替换值对象,不能修改一个值对象。
聚合:实体和值对象有规则的组合。有规则体现在它将这些原本平等的实体或值对象分了等级,从中选出一个叫聚合根的实体负责人负责这个聚合。聚合根除了负责自身的业务逻辑,还负责在聚合内部协调实体和值对象按照固定的业务规则协同完成共同的业务逻辑。它还是聚合对外的接口人,以聚合根ID关联的方式接受外部任务和请求,在上下文内实现聚合之间的业务协同。
领域服务:领域层面向对外的一种服务,它一般对同一个实体的一个或多个方法进行组合和封装,或对多个不同实体的操作进行组合或编排,对外暴露成领域服务。目的是为了隐藏领域层的业务逻辑实现。
仓储:存储数据的仓库,不过和数据库不同在于,数据库用于存取数据,仓储是为了存储持久化数据。从架构层面来说,仓储用于连接领域层和基础结构层,仓储的作用对象的领域模型的聚合根,也就是说每一个聚合都有一个单独的仓储。
分层架构的一个重要原则是每层只能与位于其下方的层发生耦合。分层架构可以简单分为两种,即严格分层架构和松散分层架构。在严格分层架构中,某层只能与位于其直接下方的层发生耦合,而在松散分层架构中,则允许某层与它的任意下方层发生耦合。一般我们常使用的是DDD优化后的严格分层架构,优化后的分层架构将领域层作为核心,放在最下方。
综上所述,DDD分层架构是一种基于领域驱动设计思想的软件架构模式,它通过分层的方式将软件模块进行划分,并明确了每层的功能和职责。这种架构模式有助于提高软件的可维护性、可扩展性和可重用性。