当前位置:网站首页>.NET现代应用的产品设计 - DDD实践
.NET现代应用的产品设计 - DDD实践
2022-08-10 20:13:00 【MASA技术团队】
统一术语(战略设计)
我们将通过DDD完成业务与技术的完整落地
统一
领域模型术语 DDD模式名称
技术
技术设计术语 技术术语 技术设计模式
业务
领域模型术语 DDD模式名称 业务术语 设计无关的业务术语
清晰的事件流
DDD
领域驱动设计是一个有关软件开发的方法论,它提出基于领域开发的开发模式,基于DDD理论,我们可以设计出高质量的软件模型。它围绕业务概念构建领域模型来控制业务的复杂度,解决软件难以理解和演化的问题。
战略设计(业务)
领域、子域、限界上下文将领域拆分成子域,并划分核心子域、支撑子域和通用子域
以子域展开事件风暴,根据上下文语义划分限界上下文,建立通用语言,完成
领域建模领域建模将作为能力中心规划的重要依据
完成能力中心地图和优先级后,作为微服务设计的输入完成战术设计
战术设计(技术)
聚合、聚合根、实体、值对象、领域服务等
按照领域模型完成微服务设计和落地
建立聚合、聚合根、实体、值对象、领域服务等对象之间的依赖关系,以代码对象的形式映射到服务中,采用分层架构完成微服务设计和落地
事件风暴
一种灵活的研讨会形式,用于协作探索复杂的业务领域
活动准备
人:业务人员,领域专家,技术人员,架构师,测试等
看板:可以将事件流可视化的白板或者画图工具等
彩色贴纸:填写事件,命令等
业务场景:规定业务场景,以一个电商项目为例
事件风暴流程精简版
领域对象设计
领域对象关系
分解聚合,提取该聚合包含的领域对象 领域对象的业务不变性 领域对象具有一致的生命周期
例:订单聚合包含订单实体,订单行实体订单实体包含收货地址值对象
定义实体与值对象
实体:存在唯一性标识,实体间是否相等的判断依据也是唯一标识 值对象:表示属性的不变值
C4模型
用于可视化软件架构:反映软件架构师和开发人员如何思考和构建软件的抽象
Context:各软件系统如何交互,不关注细节
Containers:可以看到软件系统内部结构,如U,服务,DB等如何协作,通信等
Components:展示容器内的组件关系和组件的职责
Code:展示组件如何实现,如UML类图、实体关系图等,非特别复杂组件不建议关注
架构设计
我们简单的把架构设计看作是三个层面:
业务架构
根据业务需求设计业务模块及其关系:DDD的领域建模其实就已经协助我们做了业务架构和系统架构
系统架构
设计系统与子系统的模块及其关系:在DDD中业务架构是可以直接映射到系统架构上的业务变化会演变为系统架构变化,影响到技术架构变化
技术架构
根据业务需求设计业务模块及其关系:技术架构(微服务)则解决子系统之间的解耦,去中心化的服务治理和数据治理
前后分离
扫码进群,了解更多 MASA Framework欢迎你的加入
边栏推荐
- MySQL查询数据库中的表和字段
- The 2021 ICPC Asia Shanghai Regional Programming Contest D、E
- @Autowired注解 --required a single bean, but 2 were found出现的原因以及解决方法
- 转铁蛋白(Tf)修饰去氢骆驼蓬碱磁纳米脂质体/香豆素-6脂质体/多柔比星脂质体
- Water-soluble alloy quantum dot nanozymes|CuMoS nanozymes|porous silicon-based Pt(Au) nanozymes|[email protected] nanomimetic e
- 深度学习实战教程(一):感知器
- @Autowired annotation --required a single bean, but 2 were found causes and solutions
- 网站架构探测&chrome插件用于信息收集
- Implementation of graceful exit in Golang
- Iridium Ruthenium Alloy/Iridium Oxide Biomimetic Nanozyme | Palladium Nanozyme | GMP-Pd Nanozyme | Gold-Palladium Composite Nanozyme | Ternary Metal Pd-M-Ir Nanozyme |shell nanozyme
猜你喜欢
多功能纳米酶Ag/PANI|柔性衬底纳米ZnO酶|铑片纳米酶|Ag-Rh合金纳米颗粒纳米酶|铱钌合金/氧化铱仿生纳米酶
Transferrin-modified vincristine-tetrandrine liposomes | transferrin-modified co-loaded paclitaxel and genistein liposomes (reagents)
- [email protected]纳米模拟酶|PtCo合金纳米粒子"/>
水溶性合金量子点纳米酶|CuMoS纳米酶|多孔硅基Pt(Au)纳米酶|[email protected]纳米模拟酶|PtCo合金纳米粒子
3D Game Modeling Learning Route
铁蛋白-AHLL纳米颗粒|人表皮生长因子-铁蛋白重链亚基纳米粒子(EGF-5Cys-FTH1)|铁蛋白颗粒包载氯霉素Chloramphenicol-Ferritin
电脑开不了机是什么原因?
转铁蛋白(TF)修饰紫杉醇(PTX)脂质体(TF-PTX-LP)|转铁蛋白(Tf)修饰姜黄素脂质体
线性结构----链表
QoS Quality of Service Eight Congestion Avoidance
XML小讲
随机推荐
常见端口及服务
(十二)STM32——NVIC中断优先级管理
spark学习笔记(九)——sparkSQL核心编程-DataFrame/DataSet/DF、DS、RDD三者之间的转换关系
Apache DolphinScheduler 3.0.0 正式版发布!
idea汉化教程[通俗易懂]
Rider调试ASP.NET Core时报thread not gc-safe的解决方法
铁蛋白颗粒Tf包载多肽/凝集素/细胞色素C/超氧化物歧化酶/多柔比星(定制服务)
Tf铁蛋白颗粒包载顺铂/奥沙利铂/阿霉素/甲氨蝶呤MTX/紫杉醇PTX等药物
UnitTest中的Path must be within the project 问题
[Go WebSocket] Your first Go WebSocket server: echo server
(10) Sequence and deserialization of image data
从 Delta 2.0 开始聊聊我们需要怎样的数据湖
Colocate Join :ClickHouse的一种高性能分布式join查询模型
UE4 - 河流流体插件Fluid Flux
力扣18-四数之和——双指针法
【语义分割】2015-UNet MICCAI
电信保温杯笔记——《统计学习方法(第二版)——李航》第17章 潜在语义分析
Demis Hassabis:AI 的强大,超乎我们的想象
leetcode 85.最大矩形 单调栈应用
赎金信问题答记