Spiga

随笔档案 - 2011年4月

通过银行转账作为例子深入分析各种实现该业务逻辑的方法(事务脚本、Evans DDD、基于事件驱动的设计)

2011-04-17 21:53 by netfocus, 2246 visits, 网摘, 收藏, 编辑
摘要:废话不多说了,本文的目的是希望通过一个“银行转账”的例子来和大家分享一些我最近学习到的关于如何组织业务逻辑的心得和体会。当然,本人的能力和领悟有限,如有不正确之处,还希望各位看官能帮我指出来。我始终坚持一个信念,没有讨论就没有进步,任何一个非盈利为目的的人或组织始终应该把自己所学的知识共享出来与人讨论,这样不管对自己或对他人或对整个社会都大有好处。因为一个人的知识毕竟是有限的,但可以(并且也只能)和别人相互沟通交流学习来弥补这个缺陷。银行转账的核心业务逻辑大家应该都很熟悉了,主要有这么几步:源账户扣除转账金额,当然首先需要先判断源账户余额是否足够,如果不够,则无法转账;目标账户增加转账金额;为 阅读全文

基于事件驱动的领域模型实现框架 - 分析框架如何解决各种典型业务逻辑场景

2011-04-03 23:30 by netfocus, 2174 visits, 网摘, 收藏, 编辑
摘要:前面一篇文章介绍了我设计的基于“事件”驱动的领域模型的基础框架的设计起因和设计思路。基于这个框架,我们领域模型中的所有领域对象有如下几个特点:任何一个领域对象是“活”的,它不仅有属性(对象的状态),而且有方法(对象的行为)。为什么说是“活”的呢?因为领域对象的行为都不是被另外的领域对象调用的,而是自己去响应一些“事件” ,然后执行其自身的某个行为的。在我看来,如果一个领域对象的方法是被其他的领域对象调用的,那这个对象就是“死”的,因为它没有主动地去参与到某个活动中去。这里需要强调的一点是,领域对象只会更新它自己的状态,而不会更新其他领域对象的状态。所有的领域对象之间都是平等的,任何两个领域对象 阅读全文