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

要实现DDD(domain drive  design 领域驱动设计)原始意图,必须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 CQRS ES,而且也推出这种开源框架,这些都是一种探索,是不是代表未来不能确定,可是假设这是未来。我相信这是JavaEE或Spring必须跟上的,可是Java C#语言本身带来的限制,还是不如新语言Scala等要优雅。

虽然jdonframework使用Disruptor实现了领域事件,也是通过领域模型的注入实现,虽没有Scala的Actor那么直接,可是性能和简洁不亚于Actor。

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

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

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

[外文理解] DDD创始人Eric Vans:要实现DDD原始意图,必须CQRS+Event Sourcing架构。相关推荐

  1. DDD 领域驱动设计-如何 DDD?

    注:科比今天要退役了,我是 60 亿分之一,满腹怀念-??? 前几天看了园友的一篇文章<我眼中的领域驱动设计>,文中有段话直击痛点:有人误认为项目架构中加入 Repository,Doma ...

  2. 直播 | 小爱通用理解团队负责人雷宗:小爱同学中控意图理解

    「AI Drive」是由 PaperWeekly 和 biendata 共同发起的学术直播间,旨在帮助更多的青年学者宣传其最新科研成果.我们一直认为,单向地输出知识并不是一个最好的方式,而有效地反馈和 ...

  3. 【DDD/CQRS/微服务架构案例】在Ubuntu 14.04.4 LTS中运行WeText项目的服务端

    在<WeText项目:一个基于.NET实现的DDD.CQRS与微服务架构的演示案例>文章中,我介绍了自己用Visual Studio 2015(C# 6.0 with .NET Frame ...

  4. (转)DDD CQRS和Event Sourcing的案例:足球比赛

    原文链接: https://www.jdon.com/44815 在12月11日新的有关DDD CQRS和Event Sourcing演讲:改变心态- 以更加面向对象视角看待业务领域建模中,作者以足球 ...

  5. Lind.DDD敏捷领域驱动框架~Lind.DDD各层介绍

    回到目录 Lind.DDD项目主要面向敏捷,快速开发,领域驱动等,对于它的分层也是能合并的合并,比之前大叔的框架分层更粗糙一些,或者说更大胆一些,在开发人员使用上,可能会感觉更方便了,更益使用了,这就 ...

  6. DDD入门一:什么是DDD?

    DDD(Domain-Driven Design 领域驱动设计)是由Eric Evans最先提出,目的是对软件所涉及到的领域进行建模,以应对系统规模过大时引起的软件复杂性的问题.整个过程大概是这样的, ...

  7. 「领域驱动设计」DDD,六边形架构,洋葱架构,整洁架构,CQRS的整合架构

    这篇文章是软件架构编年史的一部分,一系列关于软件架构的文章.在这些文章中,我写了我对软件架构的了解,我如何看待它,以及我如何使用这些知识.如果您阅读了本系列以前的文章,那么本文的内容可能更有意义. 大 ...

  8. DDD为什么能火起来?DDD 与微服务到底是啥关系!

    来源:https://www.cnblogs.com/Courage129/p/14839544.html DDD为什么能火起来? 我们先不讨论DDD的定义, 先梳理一下DDD火起来的背景, 根据我学 ...

  9. php的ddd,在MVC框架中实现DDD – PHP

    在mvc中,模型是一个层,它包含所有的域业务逻辑. 在域驱动设计中,业务逻辑可以分为各种构建块. 在域驱动设计域模型中. A domain model is a system of abstracti ...

最新文章

  1. SVN:This client is too old to work with working copy…解决的方法
  2. centos 查找nginx_centos7肿么查看已经安装nginx
  3. php判断版本号大小,通用javascript代码判断版本号是否在版本范围之间_javascript技巧...
  4. CMap的使用(转)
  5. js 实现pdf在线阅读
  6. vim 常用的快捷键
  7. Opencv LBP特征
  8. Hive开启WebUI
  9. 【USACO】Team Tic Tac Toe(C题)
  10. 如何重置Mac的蓝牙模块以解决连接问题
  11. Android 高级混淆和代码保护技术
  12. 【C++ STL应用与实现】23: 如何使用std::mem_fn (since C++11)
  13. 追涨而不被套的4大绝招[转载]
  14. 手机测试软件 lg g5,LG G5评测:系统功能初体验
  15. 警惕!QQ盗号又出新招 不改密码只转移QQ币
  16. SQL Server备份、完整备份,差异备份、日志备份
  17. 个人成长 | 总结2018--展望2019.
  18. 模拟CMOS集成电路设计入门学习(6)
  19. 在安装Centos时如何选择磁盘的分区?
  20. 基于Vue的高德离线地图开发--省市县

热门文章

  1. Tkinter的Message组件
  2. 对象创建的过程细节是怎样的?一起来探讨内存变化细节
  3. VUE—从入门到飞起(五)
  4. flutter-Text 以字符的方式截断
  5. android 触摸屏 旋转,android-使用OpenGl和触摸屏功能在视觉上纠正旋转
  6. 直播预告丨拆解 LTV:增长焦虑,企业如何诊断黄金流量?
  7. 八城联动 丨 神策 2020 数据驱动用户大会「长沙站」重磅来袭!
  8. JAVA关系表达式解析微引擎
  9. 汉王人脸1000万用户后的第一人诞生
  10. 什么是网络套接字(Socket)?