2018-08-16 一步一步用DDD设计电商网站 —— 回顾与总结

本系列所有文章

如何一步一步用DDD设计一个电商网站(一)—— 先理解核心概念

如何一步一步用DDD设计一个电商网站(二)—— 项目架构

如何一步一步用DDD设计一个电商网站(三)—— 初涉核心域

如何一步一步用DDD设计一个电商网站(四)—— 把商品卖给用户

如何一步一步用DDD设计一个电商网站(五)—— 停下脚步,重新出发

如何一步一步用DDD设计一个电商网站(六)—— 给购物车加点料,集成售价上下文

如何一步一步用DDD设计一个电商网站(七)—— 实现售价上下文

如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成

如何一步一步用DDD设计一个电商网站(九)—— 小心陷入值对象持久化的坑

如何一步一步用DDD设计一个电商网站(十)—— 一个完整的购物车

如何一步一步用DDD设计一个电商网站(十一)—— 最后的准备

如何一步一步用DDD设计一个电商网站(十二)—— 提交并生成订单

如何一步一步用DDD设计一个电商网站(十三)—— 领域事件扩展

如何一步一步用DDD设计一个电商网站(十四)—— 领域事件扩展

一、前言

这是本系列的最后一篇了,后续可能会有一些关于DDD方面新的想法和问题的解决过程的文章,会另起标题来写。所以这篇就把之前的几篇回顾一下,也算是对自己这3个月的内容做一个总结,对之前的几篇都有看过的童鞋可以跳过本篇。

二、故事的开始

这次的这个系列是自己给自己定下的一个目标,还是下了比较大的决心的。因为在我看来,不管是技术方案也好还是设计方案也好,DDD的价值并不局限于在它本身,它是一种抽象能力和思维方式的很好的锻炼。还是那句话,我一直相信的是,做好了DDD,是成为一个合格的架构师的必要非充分条件。所以一是想把自己这几年用DDD进行实战过程中的一些收获的总结并由各位来检验,二是希望自己的一些经验可以帮助到更多的人来学习DDD。于是从16年10月底开始就决定每周一更本系列的博文,直到现在。

三、回顾

第一篇中主要讲了一些概念性的东西,并且结合本系列的Demo设计场景,先梳理出了整个上下文映射图。这一篇我觉得每个人都应该在实践过程中有必要不断的进行回顾并思考其中的边界划分是否合理等问题,需要做出更符合当前背景的设计。

第二篇开始就进入实战了,主要内容是列举了几种比较常见的分层方式,并且把整个Demo中的项目分层确定了下来。我想这篇可以给一些准备入门的朋友们做为一个起点,一个可以把DDD落地到手头项目中的起点。

第三篇主要讲述了在核心域中的几个领域对象的建模,和与不同上下文的交互方式的设计。其实该篇的目的更多的是把前2篇中讲的一些概念性的东西以代码的形式表现出来,而恰恰这些是我们实际编码过程中需要耗费精力最大的地方,因为领域对象的建模是否合理,很大程度影响了整个项目的复杂度。

第四篇开始引入了领域服务和应用服务,并且通过代码的方式来体现出了2者的区别,这也是比较容易混淆的一部分概念,可能有些朋友会傻傻分不清楚某些代码到底应该放在哪里去写。记住:应用服务负责协调,领域服务则应该是某些不属于任何领域对象的业务操作的体现

第五篇内容相对较少,主要是引入了单元测试和对各位园友提出的一些意见进行改进。

第六篇开始引入了一个新的上下文,然后讲述了几种常见的集成方式,并且选择了其中的一种来具体实现。在实现的过程中,建议贯彻好六边形架构的设计思想,做好防腐层的设计,以保证内聚的领域对象不被破坏。

第七、八篇从技术角度来看并没有增加新的东西,更多的是一种对领域对象进行建模的过程中笔者的一个习惯和方式,并且用代码来表现出来。更多的是对业务的实现。

第九篇主要阐述的是仓储层的设计,以及在不同的存储方案中的技术支持。本文以实战为主,举了2个常见的场景和4种解决方案,并且选择其中一种进行了实现。我想这篇还是比较有价值的,可以给大家多一些借鉴价值。

第十篇还是业务上的补缺和完善,业务主导的一篇内容。

第十一篇其实更多的是为第十二篇打铺垫。

第十二篇从技术角度来看引入了较多的东西:领域事件、领域事件的发布、和在多个上下文之间集成会遇到的问题和解决方案,并且进行了代码实现。

第十三篇是对第十二篇放到分布式场景中的考量。

到目前为止,其实在用DDD做项目的过程中涉及的基本概念和相应的实现都已经有了。所开放的Demo,麻雀虽小但五脏俱全。

四、结语

本系列的Demo,仅包含了一些核心的部分,我希望可以促使大家多一些思考。特别是一些仅仅是有兴趣的或者刚入门的童鞋,可以在这个基础之上,去实践。我们不要盲目的追求技术的炫酷,比如那些相对偏向技术层面的CQRS、事件源等的实现。我觉得大家在真正经过实战之后,自然会有更深的理解,为什么会出现这些技术方案,和它真正用来解决的问题是什么,并且自己能够去实现。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏nimomeng的自我进阶

《产品体验要素》读书笔记

无论是功能型产品还是信息型产品,战略层关注的内容都是一样的——来自企业外部的用户需求。我们必须了解这些观众想从我们这儿得到什么,还要知道他们想达到的这些目标将怎...

11420
来自专栏AI科技评论

动态 | 首个应用到大规模真实工业场景的神经网络控制系统在谷歌上线了

AI 科技评论按:即便深度学习和其它机器学习方法近几年已经取得了不小的发展,但是把它们直接应用在真实工业场景中、让它们直接控制工业系统还未曾见到。深度学习本身缺...

10210
来自专栏薛梁的专栏

国内首款 FPGA 云服务器,性能是通用 CPU 服务器 30 倍以上

企业可以通过 FPGA 云服务器进行 FPGA 硬件编程,可将性能提升至通用 CPU 服务器的 30 倍以上。同时,与已经深入人心的高性能计算的代表 GPU 相...

1.8K00
来自专栏机器之心

演讲 | Youichiro Miyake:数字游戏世界中角色的觉醒与意识

机器之心原创 作者:Joni 编译参与:马亚雄、黄小天 2 月 16 日,星期四,我参加了在东京举办的第五届意识俱乐部 (consciousness club...

306130
来自专栏Keegan小钢

小钢的架构思考:架构规划

上一篇简单聊了下什么是架构,还将架构划分为三个阶段:规划阶段、设计阶段和构建阶段,构建阶段其实也是架构实现的阶段。其实,三个阶段的界限并不明显,而占比最多的是设...

12460
来自专栏飞雪无情的博客

什么是专业

当我们看到一个人做事的时候,我们可以很快的判断这个人是否专业?哪怕这个人从事的行业和我们相去甚远,甚至千差万别,我们也可以很快的判断出来,不过「专业」这个词的表...

12240
来自专栏姬小光

前端工程师的核心价值 @2018

作为一个还算资深的前端工程师,我也时常在思考自身的价值到底在何处。网上每年都有许多关于前端工程师这个岗位的讨论,其之所以如此激烈,或因该岗位本身无法明确定义,故...

16330
来自专栏架构之美

转转大数据平台从 0 到 1 演进与实践

14520
来自专栏DevOps时代的专栏

DevOps实施:项目群管理(PPM)中的需求和计划管理

本文面向的是企业IT用户(尤其是每年要投入数以百计的人力,开发维护十几个甚至几十个上百个上不同系统的企业),在组织范围内的计划和需求消耗太多的问题。而对于只有十...

20290
来自专栏新智元

清华大学突破量子纠缠接口新纪录,首次实现25个量子接口之间的量子纠缠

18650

扫码关注云+社区

领取腾讯云代金券