Skip to content

Commit c730a22

Browse files
committed
docs: synced via GitHub Actions
1 parent c70fec6 commit c730a22

File tree

6 files changed

+3561
-0
lines changed

6 files changed

+3561
-0
lines changed

src/ppt/ddd-next/ddd-next-practice.ppt.html

Lines changed: 882 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 179 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,179 @@
1+
### **PPT大纲:DDD的本质论——从理论到工程科学的完整实践**
2+
3+
---
4+
5+
#### **Part 1: 引言与挑战 (2页)**
6+
7+
**Slide 1: 标题页**
8+
* **标题**: DDD的本质论:从理论到工程科学的完整实践
9+
* **副标题**: 基于可逆计算与Nop平台,实现“涌现”的领域驱动设计
10+
* **主讲人**: [您的姓名]
11+
* **日期**: [日期]
12+
13+
**Slide 2: 挑战:从“高手的艺术”到“工程科学”**
14+
* **当前困境**: DDD理论宏大,但实践中常沦为依赖个人经验和悟性的“高手的艺术”。
15+
* **核心痛点**:
16+
* 架构易腐化(熵增定律)。
17+
* 理论与代码脱节,难以落地和治理。
18+
* 团队纪律难以维持,六边形架构等理念易被破坏。
19+
* **我们的目标**: 将DDD转变为一门**可编排、可验证、可演化**的工程科学。
20+
* **解决方案**: 引入**可逆计算**作为DDD的统一技术内核。
21+
22+
---
23+
24+
#### **Part 2: 战略设计制度化:边界先行,语言即坐标系 (4页)**
25+
26+
**Slide 3: 限界上下文的物理化:从概念到“DSL图册”**
27+
* **传统**: 限界上下文(BC)是一个模糊的逻辑概念。
28+
* **Nop平台实践**: 将BC物理化为:
29+
1. **独立的模块根目录** (如 `/nop/iam`)。
30+
2. 一套专属的**DSL图册 (Atlas)**,统一由`XDef`元模型约束。
31+
* **核心价值**: 统一语言(Ubiquitous Language)不再是文档,而是可执行、可验证的**领域坐标系**
32+
* **亮点**: 所有DSL模型均支持Excel与XML/JSON无损互转,业务人员可直接参与建模。
33+
34+
**Slide 4: 上下文映射的工程化:可执行的协作机制**
35+
* **异步通信**: 统一的 `IMessageService` 接口,内置可靠事件(Outbox模式)实现。
36+
* **同步通信**: 统一的 `IRpcService` 接口,NopRPC提供类似Feign的强类型调用。
37+
* **模式转换**: 可在RPC信道上模拟消息,也可在消息总线上模拟RPC,体现设计的对称性。
38+
* **分布式事务**: 内置`NopTcc`,支持TCC和Saga模式。
39+
* **反腐层(ACL)**: 通过`Xpl`模板语言或`record-mapping` DSL实现,逻辑可`Delta`定制演化。
40+
41+
**Slide 5: 六边形架构的强制护栏 (1/2)**
42+
* **核心原则**: 最小化信息表达(只描述What,不描述How),实现框架中立。
43+
* **端口的纯粹性**: `@BizModel`仅声明业务语义,不含任何HTTP路径等技术细节,从根源上保证领域模型纯洁。
44+
* **契约由模型唯一派生**:
45+
* **单一真相源(SSOT)**: `XMeta`元数据模型。
46+
* **自动生成**: 从`XMeta`自动生成GraphQL Schema、OpenAPI、校验逻辑、前端表单。
47+
48+
**Slide 6: 六边形架构的强制护栏 (2/2)**
49+
* **实现细节的非侵入式补充**:
50+
* 通过`Delta`差量机制,为`XMeta`补充`rest:path`等扩展属性。
51+
* **公式**: `最终契约 = 纯粹模型 ⊕ 差量配置`
52+
* **适配器的可配置替换**:
53+
* 所有外部交互都通过适配器完成。
54+
* 可在`_delta`目录下通过配置**无需修改代码**即可替换适配器实现(如切换消息队列)。
55+
* **架构闭环**: 平台强制的约束,让六边形架构从“设计理念”变为“编译时护栏”。
56+
57+
---
58+
59+
#### **Part 3: 战术设计平台化:内建模式与涌现的健壮性 (7页)**
60+
61+
**Slide 7: 聚合/实体/值对象:由NopORM统一承载**
62+
* **实体**: 采用`Generation Gap`模式生成,分离机械代码与业务代码。
63+
* **值对象**: 通过`OrmComponent`实现,它是一种建立在实体字段上的**可计算视图**,比JPA的`@Embeddable`更灵活。
64+
* **内置差量**: `OrmEntity`自带状态跟踪(`dirtyProps`),实现高性能差量更新与安全的命令合并。
65+
* **动态扩展**: 内置扩展字段机制,无需修改DDL即可为实体动态增加字段。
66+
67+
**Slide 8: 仓储与服务的透明化:告别模板代码**
68+
* **CRUD子空间分离**:
69+
* **长波背景 (CRUD)**: 由统一的`IEntityDao``QueryBean`自动化处理。
70+
* **短波前景 (领域逻辑)**: 开发者聚焦于此,在`XBiz``NopTaskFlow`中实现。
71+
* **统一的仓储**: 完备的`IEntityDao`,无需为每个实体派生自定义Repository。
72+
* **统一的查询**: 强大的`QueryBean`和超越MyBatis的`sql-lib`机制。
73+
* **结果**: 彻底从增删改查的模板代码中解放。
74+
75+
**Slide 9: 逻辑编排:NopTaskFlow与NopRule**
76+
* **NopTaskFlow**:
77+
* 轻量级、细粒度的流程编排引擎。
78+
* 可用于分布式服务编排,也可用于服务内函数级逻辑组合。
79+
* 通过`XBiz`模型无缝集成,实现服务函数定义的**响应式推导**
80+
* **NopRule**:
81+
* 专业的决策引擎,支持决策表、决策树。
82+
* 可通过Excel可视化配置,与TaskFlow无缝集成。
83+
* **清晰分工**: 仓储(`IEntityDao`) -> 应用服务(`XBiz`) -> 流程编排(`TaskFlow`) -> 复杂决策(`Rule`)。
84+
85+
**Slide 10: 事件驱动的自然涌现:从“刻意为之”到“外部挂件”**
86+
* **传统问题**: 在业务代码中手动发布事件(`eventPublisher.publish(...)`),具有侵入性。
87+
* **Nop平台方案**:
88+
1. **全域可观测性**: 在各层DSL模型(服务、持久化、流程)中预留标准化的**观测点**(如`<observe>`)。
89+
2. **声明式事件编织**: 通过`Delta`差量文件,向观测点**非侵入式地注入**监听逻辑。
90+
* **核心价值**: 事件驱动能力从平台中**自然涌现**,而不是在业务代码中“写”出来,实现了业务与事件的彻底解耦。
91+
92+
**Slide 11: 查询演进:NopGraphQL,CQRS与N+1的终结者**
93+
* **GraphQL新诠释**: 通用的**信息分解与组合引擎** (`REST``GraphQL`的全选特例)。
94+
* **内置CQRS**: **两阶段执行模型**天然分离了写操作(事务内)和读加工(只读)。
95+
* **N+1自动解决**: `@BizLoader` + `DataLoader`机制,根据客户端查询需求自动批量加载关联数据。
96+
* **聚合根与GraphQL的对偶统一**: 聚合根是**信息构造**,GraphQL是**信息解构**
97+
98+
**Slide 12: 终结顽疾:从根源上解决数据库死锁**
99+
* **告别死锁**:
100+
* NopORM延迟所有数据库写操作到事务提交前。
101+
*`flush`阶段,对所有INSERT/UPDATE/DELETE操作进行**全局排序**(根据表依赖和主键)。
102+
* **核心**: 确保并发事务对锁的获取顺序确定且一致,从系统层面“设计掉”死锁。
103+
104+
**Slide 13: 架构全景图:统一技术内核与平台化能力**
105+
* (展示文章中的 `nop-graphql.png` 架构图)
106+
* **总结**:
107+
* 领域模型为中心 (`BizObject` + `ORM`)。
108+
* 多引擎平台化集成 (GraphQL, Workflow, Rule)。
109+
* 透明的数据访问增强 (延迟加载、批量加载、分布式事务)。
110+
* 正交的安全架构。
111+
* **结论**: 开发者无需刻意遵循DDD,便能自然获得健壮、可演化的系统架构。
112+
113+
---
114+
115+
#### **Part 4: 演化可编程:可逆计算的“三位一体”范式 (4页)**
116+
117+
**Slide 14: 统一演化公式:Y = F(X) ⊕ Δ**
118+
* **核心公式**: `有效模型 = Generator<基础模型> ⊕ Δ(差量)`
119+
* **深刻洞察**: **全量是差量的特例** (`A = 0 + A`)。这统一了“从零构建”和“定制修改”。
120+
* **同构设计**: 差量的表达形式与全量完全一致,仅通过`x:override`等元数据表达变更意图。
121+
* **工程价值**: 统一的差量表达,贯穿前后端、数据库,极大简化系统设计。
122+
123+
**Slide 15: 确定性构造:S-N-V加载与分形生产线**
124+
* **S-N-V加载管道**: 所有DSL模型都经过三个确定性阶段:
125+
1. **S (Structure Merge)**: 通用的树结构合并。
126+
2. **N (Normalization)**: 领域特定的语义加工。
127+
3. **V (Validation)**: 最终的合法性检查。
128+
* **分形软件生产线**:
129+
* (展示 `delta-product-line.png` 图)
130+
* `XORM → XMeta → XView → XPage`,每一步都遵循 `Y = F(X) ⊕ Δ`
131+
* **自相似性**: 生成器和差量本身也可以递归分解,提供无限的定制灵活性。
132+
133+
**Slide 16: 全栈差量化定制:不改一行代码的演化之道**
134+
* **差量文件系统**: 类似Docker的UnionFS,通过分层覆盖实现系统级资源定制。
135+
* **实践**: 在`_delta`目录下,通过同名文件即可非侵入式地修改数据模型、业务逻辑、IoC配置、前端界面等任何层面。
136+
* **范式转变**:
137+
* ****: `1 Core + N Forks` (分支地狱)
138+
* ****: `1 Base + N Deltas` (可组合的差量宇宙)
139+
* **价值**: 保证基础产品可独立升级,定制逻辑可累积复用。
140+
141+
**Slide 17: 契约即测试:全链路溯源与快照测试**
142+
* **活文档**: Excel模型即“可执行合同”,驱动DDL、后端服务、API、前端骨架的自动生成。
143+
* **全链路溯源**: 任何模型元素都可一键`_dump`,追溯其完整的“生成+修改”历史。
144+
* **快照测试**:
145+
* 通过`@EnableSnapshot`自动录制服务调用的输入、输出及**所有副作用**
146+
* **完备的可观测性**将不确定的测试恢复为确定性的纯函数。
147+
* 极大降低自动化测试的创建和维护成本。
148+
149+
---
150+
151+
#### **Part 5: 最终的范式革命与总结 (3页)**
152+
153+
**Slide 18: 范式革命:从“应用DDD”到“涌现DDD”**
154+
* **类比**:
155+
* **传统DDD**: 如牛顿力学,需精确分析每个“作用力”(有意识地应用模式)。
156+
* **Nop平台**: 如广义相对论,塑造一个“弯曲时空”(由可逆计算定义的构造空间),好的设计是沿“测地线”的自然结果。
157+
* **核心转变**: 平台**内化**了DDD模式,而非在应用层提供抽象。
158+
* 就像DI框架内化了单例模式,开发者只需声明,无需手动实现。
159+
* **终极目标**: **忘记DDD**。当构造工具源自第一性原理时,合乎领域本质的结构会**自然涌现**
160+
161+
**Slide 19: 案例实证与启示:思想重于形式**
162+
* **案例**: 某大型银行核心系统,在**非Nop平台**技术栈(SpringBoot+MyBatis)上成功实践可逆计算思想。
163+
* **关键实践**:
164+
* 开发`Delta Aware`模型加载器,在加载期合并差量。
165+
* 改造MyBatis,引入`DataCache`上下文,实现“聚合根编程”。
166+
* 将前端AMIS JSON配置差量化管理。
167+
* **启示**:
168+
1. **可逆计算是一种架构思想**,可以赋能于现有技术栈。
169+
2. **可以渐进式演进**,从配置文件的差量化等单个维度切入。
170+
3. 它解决的是软件工程的**本质性痛点**
171+
172+
**Slide 20: 总结与Q&A**
173+
* **回顾**: 我们展示了如何通过`可逆计算``Nop平台`,将DDD从抽象理论,转变为一套严谨、闭环、可演化的工程科学。
174+
* **核心价值**:
175+
* **制度化**的战略设计
176+
* **平台化**的战术模式
177+
* **系统化**的演化能力
178+
* **最终愿景**: 让开发者从“如何正确构建”的技术问题中解放,回归到“构建什么业务”的根本问题。
179+
* **Q&A**

0 commit comments

Comments
 (0)