diff --git a/vue2-boot-ddd-cola/README.md b/vue2-boot-ddd-cola/README.md index 6176171704bc80108101efc90a8678c2e838568a..9d761a76e9f68f5c074ec2177fc5e5cb892eafbf 100644 --- a/vue2-boot-ddd-cola/README.md +++ b/vue2-boot-ddd-cola/README.md @@ -1,4 +1,24 @@ ### 阿里巴巴技术团队 COLA DDD 框架模板 - COLA 4.0:应用架构的最佳实践 https://blog.csdn.net/significantfrank/article/details/110934799 -- 作为一种设计思想去学习,COLA的最佳实践,是为什么去这样设计?从哪些角度可以去看到其设计的优雅 \ No newline at end of file +- 作为一种设计思想去学习,COLA的最佳实践,是为什么去这样设计?从哪些角度可以去看到其设计的优雅 + +#### COLA 的分层设计 + +![DDD分层设计](./docs/img/COLA.png) + +- 适配层(Adapter Layer):负责对前端展示(web,wireless,wap)的路由和适配,对于传统B/S系统而言,adapter就相当于MVC中的controller +- 应用层(Application Layer):主要负责获取输入,组装上下文,参数校验,调用领域层做业务处理,如果需要的话,发送消息通知等。层次是开放的,应用层也可以绕过领域层,直接访问基础实施层 +- 领域层(Domain Layer):主要是封装了核心业务逻辑,并通过领域服务(Domain Service)和领域对象(Domain Entity)的方法对App层提供业务实体和业务逻辑计算。领域是应用的核心,不依赖任何其他层次 +- 基础实施层(Infrastructure Layer):主要负责技术细节问题的处理,比如数据库的CRUD、搜索引擎、文件系统、分布式服务的RPC等。此外,领域防腐的重任也落在这里,外部依赖需要通过gateway的转义处理,才能被上面的App层和Domain层使用 + +#### 核心思想 + +- 层级划分:划分不同的层级,职责分离开,只需要关注领域的业务要素,而所有的业务操作都会下沉到基础设施层 [Infrastructure],同样,对外部的依赖也丢在这里,也就是ACL [Anti-corruption layer 防腐层],既然是接入第三方服务,必然会出现不稳定的情况等,所以防腐层就是为了应对这种情况。 + +#### COLA-Details 分层细节 + +![DDD分层设计](./docs/img/COLA-Details.png) + + +- 文初的 COLA 4.0:应用架构的最佳实践 ,作者已经表述的非常清晰,也是毕竟容易理解。在刚刚接触DDD的时候不是很好理解,那么可以类比我们写代码中的工具类的概念。其实道理十分相似。只不过一个是在实现层面、而一个在设计层面。 \ No newline at end of file diff --git a/vue2-boot-ddd-cola/docs/.gitkeep b/vue2-boot-ddd-cola/docs/.gitkeep deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/vue2-boot-ddd-cola/docs/img/COLA-Details.png b/vue2-boot-ddd-cola/docs/img/COLA-Details.png new file mode 100644 index 0000000000000000000000000000000000000000..11cd13687a58fd4f95610efe2e551e7c56e1b82b Binary files /dev/null and b/vue2-boot-ddd-cola/docs/img/COLA-Details.png differ diff --git a/vue2-boot-ddd-cola/docs/img/COLA.png b/vue2-boot-ddd-cola/docs/img/COLA.png new file mode 100644 index 0000000000000000000000000000000000000000..016aca6c2b6c500fbbe2a2ec31acc0b6dc58e8ca Binary files /dev/null and b/vue2-boot-ddd-cola/docs/img/COLA.png differ