业务|如何从0到1实践DDD( 五 )


个人觉得,可以理解是应用层描述了一个具体操作从开始到结束的每一个环节,而领域层则是对其的细化,用来处理具体的某一个环节。
比如,比如线上购物中,购物车结算这一场景可看成是一个应用行为。而这个行为又主要包括金额计算、支付、生成订单,这些子环节就可以理解为一个领域层的服务了。
基础设施层:可以看到上面三层都有箭头指向基础设施层,它的作用就是为其它各层提供通用的技术和基础服务,如数据持久化、消息中间件等DDD 分层架构中的要素与传统三层架构(用户界面层、业务逻辑层、数据访问层)还是挺相似的,一个主要的变化是将业务逻辑层的服务拆分到了应用层和领域层。应用层响应业务用例的变化,领域层关注不变的领域模型。
业务|如何从0到1实践DDD
文章插图
图片来自极客时间
《DDD实战课》在实际的代码工程便是按照这样的目录来划分,最近部门在推的整洁Git,也是这样划分目录:
业务|如何从0到1实践DDD
文章插图
接下来,便是将领域对象映射到实际的类,实现对应的属性和行为。当然,具体实现中有很多范式可参考和讨论,我们也在摸索中,待后续慢慢补充……
五、总结DDD首先不是关于技术的,而是关于讨论、聆听、理解、发现业务价值的。——Vaughn Vernon《实现领域驱动设计》
如Vernon所说的,DDD首先是关注业务的价值的。一开始我们对业务的边界、目标可能有个大概了解,但是见解还是不尽相同。
通过一起对业务的讨论与思考,我们了解了业务的概貌及核心,明确价值所在。关注到了核心,自然可以帮助我们实现与业务契合的系统。通过这次学习与实践,我们进一步接触了DDD。
当然,这也还只是开始,更多的关联知识还隐藏在冰山之下。同时我们也明白,DDD也只是一种方法论上的参考,不是“银弹”,需要不断地去实践与思考,才能体会出它的价值。
参考:

  • Eric Evans.领域驱动设计.赵俐 盛海艳 刘霞等译.人民邮电出版社,2016.
  • 美团技术团队.领域驱动设计在互联网业务开发中的实践:https://tech.meituan.com/2017/12/22/ddd-in-practice.html?spm=a2c4e.10696291.0.0.428119a4uu9Gpl
  • 极客时间.DDD实战课:https://time.geekbang.org/column/article/152677
作者:bryanzhao,微信支付后台开发工程师
本文由 @腾讯大讲堂 原创发布于人人都是产品经理,未经许可,禁止转载。
【 业务|如何从0到1实践DDD】题图来自 Pixabay,基于CC0协议。