欢迎光临汤雪华的博客

一个人一辈子能坚持做好一件事情就够了!坚持是一种刻意的练习,不断寻找缺点突破缺点的过程,而不是重复做某件事情。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2012年2月12日

摘要: 1. 聚合根、实体、值对象的区别?从标识的角度:聚合根具有全局的唯一标识,而实体只有在聚合内部有唯一的本地标识,值对象没有唯一标识,不存在这个值对象或那个值对象的说法;从是否只读的角度:聚合根除了唯一标识外,其他所有状态信息都理论上可变;实体是可变的;值对象是只读的;从生命周期的角度:聚合根有独立的生命周期,实体的生命周期从属于其所属的聚合,实体完全由其所属的聚合根负责管理维护;值对象无生命周期可言,因为只是一个值;2. 聚合根、实体、值对象对象之间如何建立关联?聚合根到聚合根:通过ID关联;聚合根到其内部的实体,直接对象引用;聚合根到值对象,直接对象引用;实体对其他对象的引用规则:1)能引用 阅读全文

posted @ 2012-02-12 14:22 netfocus 阅读(36352) 评论(40) 推荐(22) 编辑

摘要: 阅读全文

posted @ 2012-02-12 14:08 netfocus 阅读(1571) 评论(2) 推荐(3) 编辑

摘要: 阅读全文

posted @ 2012-02-12 14:06 netfocus 阅读(710) 评论(0) 推荐(0) 编辑

摘要: Reference URL:http://martinfowler.com/articles/lmax.html该架构主要基于:Disruptor + In Memory DDD + Event Sourcing通过高并发框架(Disruptor)实现用户事件的输入和Domain Event的输出;一个常驻内存的Business Logic Processor(DDD领域模型),它负责在纯内存中处理业务逻辑;关键点:首先确保用户输入事件被持久化到数据库,并定时创建快照,然后在内存中响应事件更改业务对象的状态;因为一切都是在内存中处理,所以没有IO,也不需要数据库事务,非常快;机器down了怎么 阅读全文

posted @ 2012-02-12 14:04 netfocus 阅读(9307) 评论(3) 推荐(2) 编辑

摘要: 一个对象从创建开始到消亡会经历很多事件,以前我们是在每次对象参与完一个业务动作后把对象的最新状态持久化保存到数据库中,也就是说我们的数据库中的数据是反映了对象的当前最新的状态。而事件溯源则相反,不是保存对象的最新状态,而是保存这个对象所经历的每个事件,所有的由对象产生的事件会按照时间先后顺序有序的存... 阅读全文

posted @ 2012-02-12 13:51 netfocus 阅读(23405) 评论(17) 推荐(6) 编辑

摘要: CQRS on itself is a very simple pattern. It only describes that the component of an application that processes commands should be separated from the c... 阅读全文

posted @ 2012-02-12 13:49 netfocus 阅读(6612) 评论(6) 推荐(5) 编辑

摘要: 数据有两个重要属性:首先数据是基于时间的,数据是表达一段时间内一个逻辑为真的事实。另外一个属性是数据本质上是不可变的,因为和时间有关,我们是不能回到过去改变数据的真实性。这两个属性就意味着:对数据你其实只有两个主要的操作:读取现有数据,并(随着时间)添加更多新的数据,CRUD(增删改查)称为CR(增读)。这样,CRUD其实没有U修改,因为修改对不可变数据是不其作用的(非常类似DDD中值对象不可变,不能修改,只能更换)。CRUD中也没有删除Delete,其实大部分删除其实是一种创建新数据,如果Bob停止跟随Mary,但是他们不能改变他曾经跟随过他的事实,删除那个他不跟随她的数据,你会增加一个数据 阅读全文

posted @ 2012-02-12 13:43 netfocus 阅读(3225) 评论(3) 推荐(2) 编辑

摘要: 人类社会的一切事物都是来源于对造物主智慧的学习,人类本身是不会创造任何东西的。外国新技术并不能作为软件架构的终极准则,因为老外也是人。我认为客观世界的架构应该是软件架构的唯一准则,换而言之,上帝也是一个架构师,而这个客观世界就是他的作品。有这么完美的学习对象,为什么要舍本逐末呢?就拿领域对象的设计来说,在客观世界中,人如果要做某件事情,比如扫地这个动作,扫地难道是人自己完成的吗?其实扫地是人借助扫帚这个工具完成的。换而言之,领域对象的一些动作,也根本不属于他自己,如果你把这些动作硬要强加在领域对象身上,就肯定会出现类似领域对象中调用技术层这种别扭的问题。比如,经常有什么贫血对象,和充血对象之类 阅读全文

posted @ 2012-02-12 13:43 netfocus 阅读(3716) 评论(3) 推荐(1) 编辑

摘要: 经典的DDD的告诉我们如果一个领域概念是一个跨多个聚合的动作,比如转帐,那么就应该用领域服务来实现这样的业务概念。领域服务的输入和输出参数都是聚合根,领域服务内部按照业务逻辑规定的执行顺序,按照面向过程的方式,逐个调用相关聚合根的相关方法完成整个业务操作。这种方式的优点是:1)清晰的表达和封装了业务... 阅读全文

posted @ 2012-02-12 13:42 netfocus 阅读(6145) 评论(4) 推荐(2) 编辑

摘要: Business value of the events, the value of having a log, the fact that the Event Store is additive only.The biggest advantage of this architecture is ... 阅读全文

posted @ 2012-02-12 13:40 netfocus 阅读(3081) 评论(0) 推荐(0) 编辑

摘要: If you are wondering “What comes after agile?,” you should look towards continuous delivery. While your development processes may be fully optimized, ... 阅读全文

posted @ 2012-02-12 13:38 netfocus 阅读(826) 评论(0) 推荐(0) 编辑