ThinkNet终于见面了

经过一段时间的DDD学习,第一个开源框架终于初步完成了,我为他命名为ThinkNet。之前或许你听过ThinkPHP,没错,虽然我对php没有过多的掌握,但是借助thinkphp,我也能开发一个web应用程序。所以我也想写一个框架能够帮助快速开发基于DDD考虑的应用程序。

首先要感谢园子里的dax.net和netfocus的文章对于我入门DDD提供了很大的帮助,同时他们也都有实现各自风格的框架,如果你阅读过我的源码也许能从他们的框架中找到一点影子,可以说没有他们的源码分享,我也很难从无到有写出ThinkNet。再次对他们的无私奉献表示感谢。

ThinkNet支持CQRS+ES(可选)或者经典DDD两种不同的风格,可以说尽量做到两种都兼容或者混搭(部分业务采用CRQS,部分采用经典的方式),毕竟一个项目完全采用CQRS+ES未免有点过于强求,经典DDD从设计上来说相对比较简单。

在这里再次贴出CQRS较为完整的架构图

一般的项目也不会采用分布式,所以可以忽略上图WCF部分。图例其他部分你都能在ThinkNet一一对应。大致的流程就是一个Command发送到CommandBus中,CommandBus会执行该Command相应的CommandHandler,CommandHandler的一般实现为创建聚合实例或者修改聚合状态,然后保存到Repository中,Repository会先将聚合产生的Event集合持久化(EventStore),持久化成功后会将事件发布到EventBus中,EventBus会执行该事件相应的EventHandler(其中包括同步到Q端数据的Handler),至此,C端的流程就结束了。Q端的业务就相对简单多了,就是一些查询接口设计和实现。

以上Command和CommandHandler及Event和EventHandler的实现主要是用的订阅/发布。框架具体是如何实现的将在后续的文章中作阐述。

说完了CQRS架构,再说一下经典DDD的架构是什么样的。还是先上图

相比CQRS,经典 DDD的架构要简单多了,创建或者修改一个聚合一般的做法是用一个DTO发送到应用层,在应用层创建或重建聚合,然后添加或更新到对应的Repository中,最后由应用层提交事务。

第一篇文章就打算这么多了。此文基本上做了一些简单的介绍,以后的博文我并不会对DDD理论做过多的阐述,因为本人对于DDD的掌握还不足以授于他人,况且园子里也有不少文章了。我将重点放在具体应用上,我也是一个码农,解决问题是我们这些码农的日常工作,所以我尽量对想即将使用DDD或者想了解DDD的人提供一些信息。

附:thinknet开源地址 http://thinknet.codeplex.com

ThinkNet终于见面了

时间: 2024-07-29 10:41:21

ThinkNet终于见面了的相关文章

Knockout学习之控制流绑定器

控制流绑定器 “foreach”绑定 顾名思义,通过该绑定我们就可以将监控数组循环输出到页面中去了,当然我们还是先来段简单的示例,仅仅只是输出监控数组: 1 <ul data-bind="foreach:people" > 2 <li data-bind="text:Name"></li> 3 </ul> 4 5 6 <script type="text/javascript"> 7 8

感谢让我遇上你

大学差不多毕业,在某学校实习期间,每天就是上课,放学没事就去上哈小网,无意间进入了一个网站(绵阳魅恋婚恋服务有限公司,http://www.zajy520.com),  于是就认识了她,刚刚认识还蛮好的,在网上了解了一段时间,然后我们就开始通电话,得知她也是大学毕业,现在还在下半学期实习期间. 最后我和我的一个从小玩大的朋友讲了,居然奇迹发现了,她是我朋友的大学同学,但是因为大家都是马上毕业,在实习期间,所以都没在学校.见面就不方便了. 就这样我对她的防备就小了,每天打电话都是打到电话自动关机,

中国经济真相:跑了 1135 家制造企业,我终于明白什么叫自己玩死自己(转)

文丨兔哥(阚雷),转型工场 CEO,工业区块链实验室首席研究员 来源丨兔哥94阚雷 ID:tuuge123 上个月,我受担任顾问的研究院里安排,担任了一个政府调研项目课题组的现场组长,领着专家组调研了大概 100 家制造企业的智能制造发展情况,并给政府提供转型升级的方案建议. 这一个月可给我忙的够呛,连座谈带参观诊断,每天至少 4 家企业,多的时候有一天 9 家的.从汽车制造.装备制造.生物医药.基础材料,到食品饮料.服装制造.图书印刷.软件电子,还有创业孵化器,基本跑了个遍. 上周我数了一下,

戴维和他的小伙伴们见面啦~

5月27日,Devstore的工作人员出差到北京,给我们北京的开发者们送上了印有"戴维"形象的T恤,这下戴维终于和他的小伙伴们见面啦,戴维感受到了北京开发者们热情的态度,虽然此行约见的开发者并不算多,但点点滴滴温暖人心~ 原来程序员也可以这么帅 一看小标题就这么有吸引力,好吧,先来张帅哥养养眼~ Dev美女与micah(右一) [开发者小档案] ID:micah,  昵称:俺村俺最帅 已写评测:道有道广告,91斗金广告,点乐移动广告,点金移动广告 初次接触micah,被他的昵称&quo

我在富士康挨踢了七年(十六. 跳楼年,终于认识了我自己)

[PS:还有两年就写完了,而这两年里在我的生命中如此的重要,一直影响到至今,到现在还还非常庆幸自己,终于做对了人生的一次选择题] 2009年初,朋友Binger介绍一私单给我,开发一套中小型企业的ERP管理系统. 第一次与人洽谈业务,果然太嫩,我就这套系统开发报了一个价,结果对方公司王总直接砍掉一半,我一狠心咬牙立马答应了.这个项目差点没做成,后来与王总熟了,他告诉我,当初他砍掉一半后我居然毫不犹豫答应了,他觉得自己吃亏了,于是找朋友Binger了解,后来才知道原来做程序员的我不会砍价.奶奶的,

O2O助汪峰成功逆袭,汪峰终于上头条了

8月2日七夕情人节,汪峰<峰暴来临>演唱会在鸟巢10万人体育场唱响,各大报纸.网站娱乐板块并没有等来汪峰向国际章求婚的"头条",不过,与乐视合作现场演出+付费直播的O2O演唱会模式却成了媒体关注的焦点.凭着玩转O2O.把30元一张的线上直播门票卖出了4.8万张,汪峰也值得上回头条了. 此次汪峰与乐视合作的O2O演唱会模式,对整个娱乐行业是具有颠覆性意义的. 1.在线上内容免费为主流,用户付费意识没能普及的背景下,竟以30元一张的票价售出4.8万张线上直播门票. 2.在线下演

一只天天找你聊天的猿,就是不约见面…

小编唯一的爱好就是逛论坛,就在今早发现一贴名为[疑惑,一只天天找你聊天的猿,就是不约见面…],看完题目眼前一亮,细心的人看后就知道这一定是个妹纸写的.小编终于忍不住打开了帖子… [帖子内容如下] 真心不是很懂男生(or猿)的脑回路啊,天天找你东南西北的聊天,就是不约见面,难道这年头相亲只需微信了么…………! 看完帖子内容,小编顿时哭笑不得 因为... 虽然小编有点懊恼嫉妒,但不会影响我的兴趣,依然喜欢看各位大神的回复: 小编以为凡是敢大胆摊牌的女生,多半属于性格爽朗的女汉纸.我想说这样的菇凉,猿

编译过程中,termcap.h 文件找不到路径 licli.a终于生成

编译过程中,termcap.h      文件找不到路径 查看是linux  源码下找不到termcap.h文件 安装了所有关于*cap*的源码包也不起作用 今天终于解决了这个问题,搜termcap.h  发现一篇文章,如下 ----------------------------------------------------------------------------------------- 安装minicom2.3出现termcap.h错误解决方法 2010-05-06 17:12:

JAVA常见面试题及解答-java开发

JAVA常见面试题及解答 Java的垃圾回收总结  浅谈Java中的内部类 1)transient和volatile是java关键字吗? 如果用transient声明一个实例变量,当对象存储时,它的值不需要维持.例如: class T { transient int a;  //不需要维持 int b;  //需要维持 } 这里,如果T类的一个对象写入一个持久的存储区域,a的内容不被保存,但b的将被保存. volatile修饰符告诉编译器被volatile修饰的变量可以被程序的其他部分改变.在多