2012-08-02 24 views
3

這裏的東西:DDD和Node.js:良好的做法有一個存儲庫與異步回調?

  • 客戶不應該知道一個庫使用的持久性機制的
  • 時稱,實現與MongoDB的倉庫作爲持久性存儲,檢索值是通過異步完成-callbacks
  • 同步調用仍然可以使用回調來實現,一個異步調用必須使用回調來實現。 (或者期貨等,但我不想去那裏)

對我來說意味着庫(至少取)應該在接口中定義的回調,即使實現恰好是同步如:

var repo = { 
    cache: {}, 
    getById: function(id,callback){ 
     callback(null,this.cache[id]); 
    } 
} 

因爲我可能(會)儘快將其更改爲類似:

var repo = { 
    getById: function(id,callback){ 
     mongoose.findOne({_id:id},callback); 
    } 
} 

恕我直言,對C/U/d同樣需要主要出現錯誤從持久層報告。

總之

:你認爲它定義庫的最佳實踐(中的NodeJS,但並不真正相關)與異步回調?

回答

1

我會認爲這是一個很好的做法,如果周圍的應用程序代碼的其餘部分也是異步。這在技術上當然是一個很好的實踐,因爲存儲庫是IO綁定的,並且保持阻塞調用線程沒有意義。問題在於異步回調會導致continuation-passing style,這會導致學習曲線和大多數語言的摩擦程度。

+0

感謝您的確認。儘管在最簡單的調用中有點麻煩,但在Node中直接使用繼續傳遞樣式(並不知道它是如此調用的)。 – 2012-08-03 09:24:15