關於CQRS的最新實踐

brighthas發表於2012-08-28
開發的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);

<p class="indent">


另外,我們知道cqrs內部是eventStore儲存,那麼如何讓資料和資料庫非同步同步呢?說白了就是儲存到另一個資料庫中,然後讓 query路徑去查詢那個DB,其實很簡單,就是弄個監聽器就可以了

/eventHandles/ChangeUserName.js 這個是個event處理者,也是監聽者,CQRS框架會自動觸發它。
虛擬碼如下:

function ChangeUserName(e){
   var data = e.data;
   db.save(data);
}
<p class="indent">


先寫這麼多, node-cqrs 將從0.0.3版本不斷完善,希望代替 node.js 的expressjs框架。努力!!

下一步會簡化開發流程,儘量讓容器和框架把複雜部分遮蔽;並充分利用JS優勢。

理論很重要,落地更重要,能用起來最重要。



[該貼被brighthas於2012-08-28 20:29修改過]

相關文章