node.js的 Domain framework JSDM
大家好,我是利奥brighthas,下面介绍一下 node.js 的 CQRS框架[ JSDM ]
参看项目
https://github.com/brighthas/jsdm
以前我开发过cqrsnode是纯粹CQRS的框架,后来工作室本身需要开发相对复杂的系统,而且要浏览器也要有很好的抗“复杂性”,所以我改版成 JSDM。
JSDM不是完全传统的CQRS DDD框架,以下说明一下。
// 这是伪代码,不是完整的,只是说明一下基本用法
|
这里需要说明的是 domain.bindDB(db) 这里的db只有一个 get(id,callback) 方法,开发者可以自己实现一个get方法即可, jsdm不是传统的 CQRS ,去除了传统的 event store 的回溯的功能。目的是提供中小型项目也能快速开发的目的,并享受CQRS的精华机制。
那么, db.get 只有这个方法, update 、 remove 、 save呢?
在domain的内部,当 new XXXAggre() 一个根的实例时,会触发一个 create event, 相应的还有 update / remove 的事件产生,而domain new一个Aggre时,会先存放在 cache 中。只有从Repository 得到 Aggre实例时,会先从cache找,如果没有会调用 db.get 方法并放入 cache然后回调出来。
remove 、 update 、 save 实现很简单。
|
另外如果想实现事件的store,直接 domain.listen(" * " ... ) 监听 * 号,表示监听全部事件。
|
如果项目很复杂,可以使用多个 domain
|
[该贴被brighthas于2013-02-20 10:52修改过]