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

原文: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


转载于:https://www.cnblogs.com/yxysuanfa/p/6906998.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的京东商品导购页面的HTML代码示例: ``` <!DOCTYPE html> <html> <head> <title>京东商品导购</title> <style> img { width: 186px; height: 205px; } #divo { width: 720px; height: 600px; border: 1px solid #0099ff; margin: 0 auto; text-align: center; } h1 { font-size: 32px; color: red; text-align: center; } .subdiv { float: left; width: 208px; height: 225px; border: 1px double #9999cc; margin: 10px; padding: 0; text-align: center; } .divaimg { border: 10px groove #9999cc; } .diva:hover img { border: 10px dashed #9999cc; } </style> </head> <body> <div id="divo"> <h1>京东商品导购</h1> <div class="subdiv"> <a class="diva" href="#"> <img src="maibaobao.jpg" alt="麦包包 Vinhas单肩包"> </a> <p>麦包包 Vinhas单肩包</p> <p>¥128</p> </div> <div class="subdiv"> <a class="diva" href="#"> <img src="adidas.jpg" alt="优购:adidas休闲鞋"> </a> <p>优购:adidas休闲鞋</p> <p>¥365</p> </div> <div class="subdiv"> <a class="diva" href="#"> <img src="nb.jpg" alt="优购NB女子重古鞋"> </a> <p>优购NB女子重古鞋</p> <p>¥299</p> </div> <div class="subdiv"> <a class="diva" href="#"> <img src="vans.jpg" alt="优购VANS女子硫化鞋"> </a> <p>优购VANS女子硫化鞋</p> <p>¥280</p> </div> <div class="subdiv"> <a class="diva" href="#"> <img src="kuangcheng.jpg" alt="优购:匡成经典低樱鞋"> </a> <p>优购:匡成经典低樱鞋</p> <p>¥199</p> </div> <div class="subdiv"> <a class="diva" href="#"> <img src="belle.jpg" alt="优购Belle羊皮女鞋"> </a> <p>优购Belle羊皮女鞋</p> <p>M19</p> </div> </div> </body> </html> ``` 在上面的代码中,我们使用了CSS样式来实现页面的布局和样式。其中,`img`标签的样式设置了宽度和高度,`#divo`标签的样式设置了宽度、高度、边框和居中对齐,`h1`标签的样式设置了字体大小、颜色和居中对齐,`.subdiv`类的样式设置了浮动、边框、外边距、内边距和居中对齐,`.divaimg`类的样式设置了图片链接的边框,`.diva:hover img`样式设置了鼠标悬停时图片链接的边框。 在页面的HTML代码中,我们使用了`<div>`标签来创建外层图层和子图层,使用`<h1>`标签创建页面标题,使用`<a>`标签创建图像超链接,使用`<img>`标签插入图片,使用`<p>`标签创建商品信息。最后,我们将页面保存为.html文件,并使用浏览器打开即可查看效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值