3

つまりね:

  • クライアントは、リポジトリによって使用される永続化メカニズムを認識すべきではありません
  • たとえば、永続ストアとして MongoDB を使用してリポジトリを実装する場合、値の取得は async-callbacks を介して行われます
  • 同期呼び出しはコールバックを使用して実装できますが、非同期呼び出しはコールバックを使用して実装する必要があります。(または先物などですが、行きたくないです)

私にとっては、実装がたまたま同期していても、リポジトリ(少なくともフェッチの場合)はインターフェースでコールバックを定義する必要があることを意味します。

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

これをすぐに次のように変更する可能性があるため、次のようにします。

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

IMHO、C / U / Dの場合、主に永続レイヤーからのエラーレポートに対して同じ必要性が生じます。

要するに:非同期コールバックを使用してリポジトリを定義することをベストプラクティスと考えていますか?

4

1 に答える 1

1

周囲のアプリケーション コードの残りの部分も非同期である場合は、良い方法だと思います。リポジトリは IO バウンドであり、スレッドの呼び出しをブロックし続ける意味がないため、技術的には確かに良い方法です。問題は、非同期コールバックによって継続渡しスタイルが発生し、ほとんどの言語で学習曲線とある程度の摩擦が発生することです。

于 2012-08-03T04:16:29.627 に答える