MASA Framework - DDD设计(2)

本文深入解析了Clean Architecture的组件和控制流,探讨了主、从适配器及其在MASA Framework中的应用。介绍了MASA Framework如何结合DDD原则,提供模板架构,支持Minimal APIS、CQRS和Dapr actor。文章总结了如何通过MASA Framework实现单体和微服务架构,鼓励读者实践和探索。

Clean Architecture

国内对于Clean Architecture的翻译很多,干净/整洁/清晰。但无论哪一种都说明了它简洁、清晰的特性。

早期它长这样

看到这张图的同学可能会对另外一张图有印象

洋葱架构(Onion)

现在长这样

看起来好像是亲戚,它们的确也有着千丝万缕的关系

分析Clean Architecture

这部分主要是根据explicit architecture文章的理解整理的,有翻译也有自己理解消化的。如有错漏欢迎指正,谢谢

三大构建块

  • 用户界面

  • 基础设施

  • 应用核心

控制流

  1. 用户界面

  2. 应用核心

  3. 基础设施

  4. 应用核心

  5. 用户界面

工具

左右两侧形成鲜明对比,动机不同

  • HTTP/CLI:告诉应用要做什么

  • SMS/Mailing Server/Search Engine...:应用告诉它们要做什么

链接工具和交付机制到应用核心

将工具连接到应用程序核心的代码单元称为适配器(端口和适配器架构)。

告诉我们的应用程序做某事的适配器称为主适配器或主动适配器,而我们的应用程序告诉我们做某事的适配器称为从适配器或被动适配器。

端口

这些适配器为了适应应用核心的一个非常特定的入口点,即端口。端口只不过是工具如何使用应用程序核心或应用核心如何使用它的规范。

你可以看作是接口和DTO

主适配器或主动适配器

主适配器或主动适配器围绕一个端口并使用它来告诉应用核心该做什么。

我们的主动适配器是Controller或Console Commands,它们在其构造函数中注入了一些对象,该对象的类实现了Controller或Console Commands所需的接口(端口)。

端口可以是控制器需要的服务接口或存储库接口,然后将 Service、Repository 或 Query 的具体实现注入并在 Controller 中使用。

或者,端口可以是Command Bus或Query Bus的接口。在这种情况下,将Command Bus或Query Bus的具体实现注入到Controller中,然后Controller构造Command或Query并将其传递给相关Bus。

注:这里其实提到了CQRS

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值