加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

[外文理解] DDD创始人Eric Vans:要实现DDD原始意图,必须CQRS+Ev

发布时间:2020-12-13 23:00:46 所属栏目:百科 来源:网络整理
导读:原文:http://www.infoq.com/interviews/Technology-Influences-DDD# 要实现 DDD(domain drive design 领域驱动设计) 原始意图,必须 CQRS +Event Sourcing。 CQRS+Event Sourcing其实不但是一种全新思想,将可能颠覆Java或C#现有的编程体系。 使用传统 JavaE

原文:http://www.infoq.com/interviews/Technology-Influences-DDD#


要实现DDD(domain drivedesign 领域驱动设计)原始意图,必须CQRS+Event Sourcing。


CQRS+Event Sourcing其实不但是一种全新思想,将可能颠覆Java或C#现有的编程体系。

使用传统JavaEE或Spring + Hibernate这样的框架,是无法实现DDD原始意图的,这个DDD创始人Eric Vans已经说过:2012年Eric Evans关于技术如何影响DDD的会话


提供基于Jdonframework实现的 CQRS源码,ES部分稍微拓展一下即可: Robot.rar,文章见 DDD DCI和领域事件

或者选用新的编程语言Scala,文章: Scala的event-sourced和 CQRS案例代码

有人说,我一定要用Spring来实现,那么会导致什么后果呢?
因为Spring不支持Domain Event,只能将外部接口直接注入到领域模型,很多接口会污染领域模型,最后领域模型还是被外币接口或架构绑架了。

这严重违背 DDD中聚合根是语言核心,编程代码必须反映统一语言
这个反复重申的要旨,难道我们重申这个只是理论喊口号吗?如果它不如此具有颠覆性,我们反复强调它干吗?如果不是因为现在所谓经典做法完全违反这种要旨,我们苦口婆心地说它干吗呢?

当然,该PPT也去除了Hibernate等ORM注解,因为它也严重绑架干扰了领域模型,干扰领域模型如实成为统一语言。

所以,尽管Jdon两年前就在讨论 DDD CQRSES,并且也推出这样的开源框架,这些都是一种探索,是不是代表未来不能确定,但是如果这是未来,我相信这是 JavaEE或Spring必须跟上的,但是Java C#语言本身带来的限制,还是不如新语言Scala等要优雅。尽管jdonframework使用Disruptor实现了领域事件,也是通过领域模型的注入实现,虽没有Scala的Actor那么直接,但是性能和简洁不亚于Actor。

如果各位有意在自己项目中实施 DDD,而且不改用框架,那么出来的效果会很差,还不如本文开始批评的贫血模型,把业务方法都放入Service中。

如果你对JavaEE认识或面向对象设计OO不够Strong,那么也请不要选择DDD,你遇到的概念和思路转变不是象学习一门语言那么简单,项目有风险,实施需谨慎。


另外一篇文章可读 http://www.jdon.com/44491

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读