跨越DDD从理论到工程落地的鸿沟】的更多相关文章

摘要:本文从DDD的核心概念讲起,重点放在如何把理论落地成代码,期望给那些正在探索DDD的同学一些指引和启发. 本文分享自华为云社区<跨越DDD从理论到工程落地的鸿沟>,作者:敏捷小智. DDD作为一种优秀的设计思想,的确为复杂业务治理带来了曙光.然而又因为DDD本身难以掌握,很容易造成DDD从理论到工程落地之间出现巨大的鸿沟.就像电影里面的桥段,只谈DDD理论姿势很优美,一旦工程落地就跪了......所以DDD的项目,工程落地很重要,否则很容易变成"懂得了很多道理,却依然过不好这一…
摘要 在前面一篇介绍了如何通过DDD的思想,来调整单体服务内的工程结构,为微服务的拆分做准备.同时介绍了我们在进行微服务拆分的时候踩过的一些坑. 这篇介绍下我们最终的方案,不一定对,欢迎留言讨论. 微服务划分 问题分析 上篇介绍过我们一开始的服务划分标准 一个领域一个服务的规则去拆分, 同时为了保证领域的纯洁性,我们区分了领域服务,和前台服务.领域服务就是领域逻辑,不直接对前端暴露.前台服务组装各个领域服务,暴露给前端. 同时为了保持扩展,我们预留了一个微服务作为服务孵化器.对于领域不清晰的(比…
最近发现文章老是被窃取,有些平台举报了还没有用.请识别我的id方丈的寺院. 摘要 DDD领域驱动设计,起源于2004年著名建模专家Eric Evans发表的他最具影响力的著名书籍:Domain-Driven Design –Tackling Complexity in the Heart of Software(中文译名:领域驱动设计,之后进行了很多迭代和演化,不过大多没有脱离这本书讨论的范围.因为Eric Evans在该书中只是提供了一套原始理论,并没有提供一套方法论,更别说可落地.所以十几年…
摘要 前面两篇介绍了DDD的目标管理.DDD的工程结构调整.这篇讨论微服务的划分.微服务是目前后端比较流行的架构体系了,那么如何做好一个微服务的划分?一个微服务的粒度应该是多大呢?这篇主要介绍如何结合DDD进行领域划分. 工程结构代码 上篇介绍了可落地的DDD的(2)-为什么说MVC工程架构已经过时 很多朋友留言说,有没有sample code,要不然太湿了,不是很明白.这里写了个sample. 就以一个博客网站为例 page1:博客列表页: 展示所有用户发表的博客 page2: 个人介绍页:有…
背景 几年前我总结过DDD战术设计的一些落地经验可落地的DDD(5)-战术设计,和一次关于聚合根的激烈讨论最近两年有些新的落地体验,回过头来发现,当初对这些概念的理解还是没有深入,这篇文章重新阐述下. 之前理解不到位的点有 战术设计的各个模块是的协作关系 哪些是问题空间问题,哪些是方案空间问题边界没有划分清楚. 实体和聚合根的区别理解不不深刻,实体和聚合根建模的方法不对. 以上问题将会在下文解释清楚. 战术设计拆解 DDD的战术设计即设计某个子域的领域模型以及代码落地.领域事件.领域对象.聚合根…
目录 MASA Framework - 整体设计思路 MASA Framework - EventBus设计 MASA Framework - MASA Framework - DDD设计(1) DDD 领域驱动设计是一个有关软件开发的方法论,它提出基于领域开发的开发模式,基于DDD理论,我们可以设计出高质量的软件模型. 它围绕业务概念构建领域模型来控制业务的复杂度,解决软件难以理解和演化的问题. 微服务 微服务是一种架构风格,通过进程间通讯.容错和故障隔离等方式,实现去中心化的服务治理. DD…
 如果我看得更远,那是因为我站在巨人的肩膀上.(If I have seen further it is by standing on ye shoulder of Giants.)                                                                                                                                                              …
关于DDD的理论知识总结,可参考这篇文章. DDD社区官网上一篇关于聚合设计的几个原则的简单讨论: 文章地址:http://dddcommunity.org/library/vernon_2011/,该地址中包含了一篇关于介绍如何有效的设计聚合的一些原则,共3个pdf文件.该文章中指出了以下几个聚合设计的原则: 聚合是用来封装真正的不变性,而不是简单的将对象组合在一起: 聚合应尽量设计的小: 聚合之间的关联通过ID,而不是对象引用: 聚合内强一致性,聚合之间最终一致性: 上面这几条原则,作者通过…
目录 DDD理论学习系列(1)-- 通用语言 DDD理论学习系列(2)-- 领域 DDD理论学习系列(3)-- 限界上下文 DDD理论学习系列(4)-- 领域模型 DDD理论学习系列(5)-- 统一建模语言 DDD理论学习系列(6)-- 实体 DDD理论学习系列(7)-- 值对象 DDD理论学习系列(8)-- 应用服务&领域服务 DDD理论学习系列(9)-- 领域事件 DDD理论学习系列(10)-- 聚合 DDD理论学习系列(11)-- 工厂 上下文映射图 战略设计与战术设计 实体 值对象 领域…
从战略到战术,领域驱动设计(Domain Driven Design,DDD)给出了诸多关于软件架构.设计.建模与编码的方法和模式,以用于应对业务复杂度.然而,许多开发人员对于 DDD 的价值仍然心存疑惑,相反,对于它的难以理解.难以学习倒是确信不疑,甚至有人惊呼 DDD 是「反人类地难懂」.这真是现实给 DDD 沉痛的当头一击啊! 从 2004 年 Eric Evans 出版<领域驱动设计>一书以来,已有十五余载.实事求是说,DDD 的推进与项目落地真的是举步维艰.个中原因,难以说清.DDD…