DDD代码分层架构

DDD四层架构

1、用户接口层:负责用户显示信息和接受用户的指令,包含:用户、程序、自动化测试、批处理等

2、应用层:理论上不应该有业务规则或逻辑,主要面向用例和流程相关的操作,由于领域层之上,所以包含了多个聚合,可以协调多个聚合服务和领域对象完成服务编排和组合。负责处理业务用例的执行顺序和结果的拼装,例如:安全认证,权限校验,事务控制,发送或者订阅领域事件

3、领域层:领域层主要体现领域模型的业务能力,用来表达业务概念,业务状态和业务规则。

4、基础层:贯穿所有层,采用依赖倒置设计为其他层提供通用的技术和基础服务,包括:工具,驱动,消息中间件,网关,文件,数据库持久化。

 

原则

每层只能与其下方的层发生耦合

 

微服务架构的演进

以聚合为基础单元,完成领域模型和微服务的架构演进,聚合可以作为一个整体,在不同的领域模型之间重组或拆分,或者直接把一个聚合独立为一个微服务。

 

架构模型分类

1、整洁架构

最外用户层 -> 应用服务层 -> 领域服务层 -> 领域模型

 

2、六边形架构

通过接口与外部进行交互的

最外层用户 -> 适配器 -> 应用层 ->领域服务层

 

3、与DDD四层架构比较

原则都是高内聚,低耦合。

3.1大致上都分了两层

  • 领域层实现面向领域模型,实现领域模型的核心业务逻辑,属于原子模型,需要保持领域模型和业务逻辑的稳定,对外提供稳定的相对细颗粒度的领域服务。
  • 应用层实现面向用户的相关用例和流程。对外提供粗粒度的API服务。对前台应用和领域层进行适配,接受前台请求,可随时做出响应和调整。

3.2合理分层的优势

  • 不要把领域无关的逻辑放在领域层实现,保证领域层的纯洁稳定
  • 也不要把领域层的逻辑放在应用层,会导致应用层过于庞大,最终导致领域模型失焦
  • 若不能保证上述两点,则可引入防腐层,进行新老系统的适配和转换,过渡完成后,废弃防腐层代码
  • 通过分层的方式来控制需求的变化从外到里对系统的影响,收到的需求的影响会越来越小,面对用户端可以快速在应用层调整,对服务和聚合进行组合和编排达到快速适配的效果。

 

 

DDD(领域驱动设计)架构是一种将软件开发按照领域驱动的思想进行的架构模式。它强调将软件系统划分成多个领域,并在每个领域内构建相应的领域模型。同时,DDD还关注业务领域的核心业务逻辑和领域专家的知识,以提高软件系统的可维护性和可扩展性。 DDD架构遵循一种分层结构,通常包括以下几个层次: 1. 用户界面层:该层负责与用户进行交互,并向用户展示数据和处理用户的输入。用户界面可以是Web界面、移动应用程序、桌面应用程序等,具体方式根据实际情况而定。 2. 应用层:该层负责协调用户界面层和领域层之间的交互。它接收用户界面的请求,将请求转发给相应的领域对象进行处理,并将处理结果返回给用户界面层。 3. 领域层:该层是DDD架构的核心,包含领域对象、领域服务、领域事件等。领域对象是对业务领域的核心概念进行建模的对象,它负责封装业务逻辑和状态,并提供操作数据的方法。领域服务则是一种处理领域对象之间复杂关系的服务,领域事件用于描述领域中发生的重要事物。 4. 基础设施层:该层负责提供与外部系统的通信、持久化数据等基础设施功能。它包括数据访问层、消息队列、缓存、日志、文件系统等。通过基础设施层,领域层可以与外部系统进行通信,并将数据持久化存储。 在实现DDD架构时,代码结构也需要遵循一些原则: 1. 领域驱动:代码结构应该按照业务领域进行划分,每个领域都有其相应的领域模型和业务逻辑。这样可以使得代码更加可读、可维护,并能够快速响应业务需求的变化。 2. 解耦和聚合:代码结构应该尽量避免强耦合,不同的模块之间通过接口进行交互,降低模块之间的依赖。同时,相关的功能应该尽量聚合在一起,减少模块之间的分散。 3. 可测试性:代码结构应该便于进行单元测试和集成测试。领域模型应该被设计为可测试的,并通过依赖注入等方式进行测试替换,以便于进行单元测试。 综上所述,DDD架构具有分层架构的特点,通过合理的代码结构可以更好地支持业务需求和系统的可扩展性、可维护性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值