张逸

读完需要

5

分钟

速读仅需 2 分钟

述说撰写《解构领域驱动设计》一书的心路历程,三年磨一剑的认真态度与艰辛苦楚,如今写作完毕,也算是苦尽甘来。本书将由人民邮电出版社异步图书社区出版,敬请关注公众号的后续消息。

写下本书内容第一个字的具体时间已不可考,从文档创建的时间看,本书的写作至少可以追溯到2017年11月,屈指算来,距今已是三载光阴流逝而过,为了本书,我已算得上呕心沥血。回想这悠悠三年,无论在万米高空的飞行途中,还是在蔚蓝海边的栖息之旅,抑或工作之余正襟危坐书桌之前,我的心弦一刻不敢放松,沉思于体系的构建,纠结于案例的选择,锱铢必较于每个文字的运用,我力求输出最好的文本,希望打造领域驱动设计技术书籍的经典!

我在ThoughtWorks的前同事滕云开我的玩笑,说:“老人家,你写完这本书,也就功德圆满了!”老人家是我在ThoughtWorks的诨名,虽然我对此称呼一直敬谢不敏,不过写作此书至今,我已心力交瘁,老人家的称谓也算名实相副了,至于是否“功德圆满”,就要交给读者诸君来品评了。

本书内容主要来自我在GitChat发布的课程《领域驱动设计实践》。该课程历经两年,完成于2020年1月21日。当时的我,颇有感慨地写下如此后记:

课程写作结束了。战略篇一共 34 章,15 万 5 千字;战术篇一共 71 章,35 万 1 千字;合计 105 章,共 50 万 6 千余字,加上两篇开篇词与这篇可以称为写后感的后记,共108 章,算是凑齐了一百单八将。如此成果也足可慰藉我为之付出的两年多艰辛时光!

我对《领域驱动设计实践》课程的内容还算满意,然而,随着我对领域驱动设计理解的蜕变与升华,我的“野心”也在不断膨胀,不仅希望讲清楚该如何实践领域驱动设计,还企图对这套方法体系进行深层次的解构。这也是本书书名《解构领域驱动设计》得名的由来。

所谓“解构”,就是解析与重构:

  • 解析,就是要做到知其然更知其所以然

  • 重构,则要做到青出于蓝而胜于蓝

我钦佩并且尊敬Eric Evans对领域驱动设计革命性的创造,他对设计的洞见至今让我赞赏不已,尤其在我彻底吃透限界上下文的本质之后,结合微服务之大行其道,更让我彻底佩服他的远见卓识;然而,尊敬不是膜拜,佩服并非盲从,在实践领域驱动设计过程中,我确实发现了这套方法体系天生存在的不足,于是,我在本书提出了GitChat课程不曾涵盖的领域驱动设计统一过程(Domain-Driven Design Unified Process),相当于站在Eric Evans的巨人肩膀上,我构建了自己的一套领域驱动设计知识体系。

领域驱动设计统一过程的提出,从根基上改变了本书的结构,我调整和梳理了写作的脉络,呈现出与《领域驱动设计实践》课程迥然有别的全新面貌,整本书不再满足于粗略地将内容划分为战略篇和战术篇,而是在领域驱动设计统一过程的指导下,将该过程的全部三个阶段作为本书的三个核心篇章:全局分析、架构映射与领域建模,再辅以开篇和融合,共分为五篇二十五章,全面而完整地表达了我对领域驱动设计的全部认知与最佳实践。在对内容做进一步精简后,本书仍然达到了43万余字,算得上是软件技术类别的大部头著作了。

该如何阅读这样一本厚书?

若你时间足够充裕,又渴望彻底探索领域驱动设计的全貌,建议还是按部就班、循序渐进地开始你的阅读之旅。或许在阅读开篇的三个章节时,你会因为太多信息量的一次性涌入,产生迷惑、困扰和不解,那只是因为我期望率先为读者呈现领域驱动设计的整体面貌,在获得整体印象之后,哪怕只是在脑海中存留了如雾一般朦胧的轮廓,也足以指导你开启对设计细节的理解和认识。

若你追求高效阅读,又渴望寻求困惑于领域驱动设计问题的答案,当然可以根据目录按图索骥,精准定位你最为关心的技术讲解。或许你会失望,甚至产生质疑,从目录中你获得了太多全新的概念,而这些概念从未见诸于任何一本领域驱动设计的书籍,那只是因为这些概念都是我针对领域驱动设计提出的改进与补充,它们是我解构全新领域驱动设计知识体系的得意之笔。——要不然,一本技术书籍怎么会写三年之久呢?

我自鸣得意的开创性概念一一罗列于此:

  • 业务活动:它是全局分析的基本业务单元,在统一语言的指导下完成对业务需求的抽象,既可帮助我们识别限界上下文,对它的细节分析还可以帮助开发团队开展领域分析建模、领域设计建模和领域实现建模;业务活动的粒度也是服务契约的粒度,由此拉近了需求分析与软件设计的距离,甚至可以说打通了需求分析与软件设计的鸿沟。

  • 菱形对称架构:虽然该模式脱胎于整洁架构与六边形架构,但它更为简洁,与限界上下文的搭配可谓珠联璧合,既保证了限界上下文作为基本架构单元的自治性,又融入了上下文映射的通信模式,极大了丰富了设计元素的角色构造型。

  • 场景驱动设计:采用过程式的设计思维,却又遵循面向对象的职责分配,从而在提高设计质量的同时降低了开发团队的设计门槛,完成了从领域分析模型到领域实现模型的无缝转换,并可作为测试驱动开发的前奏,让领域逻辑的实现变得更加稳健而高效。

以上概念皆为领域驱动设计统一过程的设计元素,同时又能与领域驱动设计的固有模式有机融合。至于我对软件复杂度成因的剖析,对价值需求和业务需求的划分,在领域驱动设计统一过程基础上建立的领域驱动设计魔方、参考过程模型与能力评估模型,诸多新概念、新方法、新模式、新体系虽说都出自我的一孔之见,但自觉可圈可点,确乎来自于我的一线实践和总结。至于内容的优劣,还是交给读者诸君来品判吧。

照例表示致谢!

感谢GitChat创始人谢工女士,没有她的支持与鼓励,就不会有《领域驱动设计实践》课程的诞生,自然不会让我下定决心撰写本书。感谢人民邮电出版社异步图书的杨海玲女士,是她的宽容与耐心,使得我能够有足够充裕的时间精心打磨本书的内容,没有因为错过最好的出版时间窗口,而催促我逼迫我尽快交稿。感谢京东周吉鑫、Amazon高翊凱 (Kim, Kao) 、腾讯王立、阿里蚂蚁金服于君泽(花名右军)与ThoughtWorks王威诸兄的抬爱,不仅拨冗为我的著作写序,也给予了许多好的建议与指点,提升了本书的整体质量。感谢阿里的彭佳斌(花名言武)、自主创业人张闯、中航信杨成科、工商银行劳永安,四位兄台作为本书试读的第一批读者,花费了大量时间认真阅读了我的初稿,提出了非常宝贵的反馈意见,帮助我订正了不少错误。感谢我的领域驱动设计技术交流群,近1500名群友的耐心等待以及坚持不懈的催促,使得我能够坚持写完本书。

之所以“三年磨一剑”,是希望通过我的努力让本书的质量对得起读者!可是,在态度上对得起读者的同时,我却对不起我生命中最重要的两个人:我的妻子漆茜与儿子张子瞻。这三年经历了风雨阳光,很遗憾,我把大部分业余时间都交给了《解构领域驱动设计》,多少个晚上笔耕不缀,妻子陪着儿子,我则陪着电脑。为了支持我的创作,没有怨怼,只有默默的支持。本书的出版,有他们一大半的功劳!最后,还要感谢我的父母,每次匆匆回家看望他们,极短的时间和他们聊天,挤出来的时间都留给本书的写作了!

在写作本篇前言的前一天,我偶然读到苏东坡的一首小词:

春未老,风细柳斜斜。试上超然台上看,半壕春水一城花。烟雨暗千家。

寒食后,酒醒却咨嗟。休对故人思故国,且将新火试新茶。诗酒趁年华。

蓦然内心被叩击,仿佛心弦被优美的辞章轻轻地带着诗意拨弄。吾身虽不能上超然台,然而书成之后,是否能够看到半壕春水一城花呢?未曾饮酒,却咨嗟,是否多情笑我早生华发?如今的我,已然焙出新火,恰当新火试新茶,却不知待到明年春未老时,能否做到何妨吟啸且徐行的落拓不羁?不管如何,还当诗酒趁年华,如此当——仰天大笑出门去,吾辈岂是蓬蒿人!


☼ 封面题图摄于二零二零年十月六日四川理县毕棚沟

- EOF -

想要加入中生代架构群的小伙伴,请添加群合伙人大白的微信

申请备注(姓名+公司+技术方向)才能通过哦!

领域驱动架构系列

Hacker News热文:请停止学习框架,学习领域驱动设计(DDD)(获500个点赞)

京东平台研发朱志国:领域驱动设计(DDD)理论启示

DDD专家张逸:构建领域驱动设计知识体系

领域驱动设计(DDD)在美团点评业务系统的实践

当DDD遇上微服务

张逸:限界上下文的边界

DDD战略篇:架构设计的响应力

可视化与领域驱动设计

初窥Bounded Context

   END
#架构师必备#点分享点点赞点在看

DDD专家张逸:《解构领域驱动设计》前言相关推荐

  1. DDD专家张逸:构建领域驱动设计知识体系

    张逸 读完需要 5 分钟 速读仅需 2 分钟 领域驱动设计专家,曾就职于 ThoughtWorks,作为 Lead Consultant 为客户提供架构设计.大数据分析.持续交付.代码质量.敏捷管理等 ...

  2. 三年磨一剑,领域驱动设计布道师出版了《解构领域驱动设计》

    解构领域驱动设计 作者:张逸 本书全面阐释了领域驱动设计(domain-driven design,DDD)的知识体系,内容覆盖领域驱动设计的主要模式与主流方法,并在此基础上提出"领域驱动设 ...

  3. 右军:为张逸《解构领域驱动设计》推荐序

    点击阅读原文进京东购买 右军: 领域驱动设计方面的书现在不是太多,而是太少.想必不少读者受过<领域驱动设计>和<实现领域驱动设计>两本书的启蒙.本书是我特别推荐的领域驱动设计方 ...

  4. 解构领域驱动设计(三):领域驱动设计

    在上一部分,分层架构的目的是为了将业务规则剥离出来在单独的领域层中进行实现.再回顾一下领域驱动设计的分层中应用层代码的实现. @Override public void pay(int orderId ...

  5. DDD专家张逸:复杂与架构演进的关系

    图 张逸 读完需要 25 分钟 速读仅需 5 分钟 张逸,架构编码实践者,IT 文艺工作者,大数据平台架构师,兼爱面向对象与函数式程序设计,热衷于编程语言学习与技艺提升,致力于将主流领域驱动设计(DD ...

  6. 张逸解构DDD:软件的核心是为用户解决领域相关的问题

    软件的核心是其为用户解决领域相关的问题的能力.所有其他特性,不管有多么重要,都要服务于这个基本目的.--EricEvans,<领域驱动设计> 应对软件复杂度,许多顶尖的软件设计人员与开发人 ...

  7. 领域驱动设计(DDD)前夜:面向对象思想

    面向对象 面向对象是一种对世界理解和抽象的方法.那么对象是什么呢? 对象是对世界的理解和抽象,世界又代称为万物.理解世界是比较复杂的,但是世界又是由事物组成的. 正是这样的一种关系,认识事物是极其重要 ...

  8. 京东平台研发朱志国:领域驱动设计(DDD)理论启示

    朱志国 平台研发 读完需要 33 分钟 速读仅需 11 分钟 过去几年,通天塔一直处于快速的业务能力建设和架构完善的阶段,以应对不断增长的业务需求和容量.高可用等技术需求,现在通天塔平台已经能满足集团 ...

  9. 阿里文娱技术专家战獒: 领域驱动设计详解之What, Why, How?

    战獒 阿里文娱技术专家 读完需要 8 分钟 速读仅需 3 分钟 阿里妹导读:什么是领域驱动设计?传统分层架构在实际开发中存在哪些问题?业务开发人员如何设计并搭建自己的领域模型?阿里文娱技术专家战獒将为 ...

最新文章

  1. GraphQL and Relay 浅析
  2. 2015.1.3 让CombBox自动弹出下拉框
  3. NPM依赖包版本号~和^的区别
  4. Exception in thread “main“ java.lang.NoClassDefFoundError: javax/script/Compilable
  5. 搭建 ELK 问题排查
  6. python数据结构-串
  7. mysql 无法创建用户_无法在MySQL 5.6中创建用户
  8. 电脑有两个显示器用来显示,如何配置呢,请看下文
  9. OpenCASCADE 开发框架(一)
  10. 暴风影音xp版本_暴风影音黯然退市!怀念那些年用过的播放器
  11. 每日一书丨金融反欺诈的底层逻辑
  12. 华为网络设备查看风扇状态命令
  13. CSDN博客大神汇总
  14. h5封装去底部_贪婪洞窟H5:也出微信小游戏了!还是原来贪婪的味道
  15. TWS耳机OVP芯片,过压保护电路芯片
  16. 发送邮件(用代码模拟邮箱服务器发送邮件)
  17. 7-191 百钱百鸡
  18. 闲鱼已售商品信息查询系统。手搓市场定价/行情查询利器
  19. 【Python自动化测试8】流程控制语句讲解
  20. 到底什么是数据湖?全面解读数据湖的缘起、特征、技术、案例和趋势

热门文章

  1. JSP连接数据库进行注册登录及展示页面及下拉框查询
  2. python的pyaudio教程入门_Python PyAudio 安装使用
  3. Android zip文件解压缩工具类
  4. WEBERP实施:二,基本信息设置
  5. matlab求解多自由度振动系统,【2017年整理】1-《机械振动基础》大作业,基于matlab的多自由度振动.doc...
  6. Mysql登录数据库,远程登录命令
  7. 【多线程常见面试题】
  8. 使用element回到顶部组件报错“Error: target is not existed: .page-component__scroll .el-scrollbar__wrap“
  9. 深度学习在音频信号处理领域中的进展(截止至2019年5月)
  10. php 用count 变量,countif函数的使用方法 PHP的可变变量名的使用方法分享