关于CQRS的最新实践

开发的node-cqrs库已经完成了,我还是喜欢实践出真知。
https://github.com/brighthas/node-cqrs/
这是lib和test,不过很多example还在整理,下面我说一下我实践CQRS的过程。

我需要一个命令生成CQRS框架。

cqrs -c myapp 通过这个命令我们生成了如下目录,

run.js // 启动文件
aggres
- User.js
eventHandles
- UserchangeName.js
commands
- ChangeUserName.js
commandHandles
- ChangeUserNameHandle.js

其实我叫CQRS这个框架应该是CRS,因为QUERY查询可以用event Handle的方式监听处理和扩展出来。

run.js 大概的代码如下:


var cqrs = require('node-cqrs');

var cmd = new cqrs.commands.ChangeUserName('brighthas');

var callback = function(result){ ... }

cqrs.commandBus.publish(cmd,callback);

另外,我们知道cqrs内部是eventStore储存,那么如何让数据和数据库异步同步呢?说白了就是保存到另一个数据库中,然后让 query路径去查询那个DB,其实很简单,就是弄个监听器就可以了

/eventHandles/ChangeUserName.js 这个是个event处理者,也是监听者,CQRS框架会自动触发它。
伪代码如下:


function ChangeUserName(e){
var data = e.data;
db.save(data);
}

先写这么多, node-cqrs 将从0.0.3版本不断完善,希望代替 node.js 的expressjs框架。努力!!

下一步会简化开发流程,尽量让容器和框架把复杂部分屏蔽;并充分利用JS优势。

理论很重要,落地更重要,能用起来最重要。



[该贴被brighthas于2012-08-28 20:29修改过]