1

Domain Drive Design の最初の実験を始めたばかりで、NWorkspace パターンを利用しています。このパターンは非常に理にかなっているように見えますが、このパターンがうまく使用されているか、公的に文書化されている場所の例をあまり見つけることができませんでした。実装に入る前に、誰かがこのパターンを使用して成功したかどうか、または誰かが私が学ぶことができるオープンソース プロジェクトで NWorkspace が使用されている参照を教えてくれるかどうかを知りたい. また、私が知っておくべき、このパターンよりも優れた、またはよりよく知られている代替手段はありますか?

NWorkspace の簡単な背景

NWorkspace に慣れていない人のために説明すると、これはJimmy Nissonによって導入された、クエリと永続化の責任を抽象化するパターンです。Jimmy Nilsson は著書 Applying Domain-Driven Design and Patterns で、NWorkspace を使用して DDD リポジトリのインフラストラクチャ部分を抽象化し、永続性に関してリポジトリ間の原子性を実行するメカニズムを提供する方法を示しています。

4

1 に答える 1

1

彼は、読み取りリポジトリと書き込みリポジトリに別々のインターフェースを推奨しているようです。
説明されているパターンの経験はありませんが、クロスリポジトリ トランザクションを使用しないことをお勧めします。代わりに、DDD コミュニティ (Eric Evans、Udi Dahan、Greg Young) の間で人気があり、私を本当に助けてくれたいくつかのソリューションを提案します。

  1. 集約ルートでは常に熱心な読み込みを使用してください。そうすれば、クロスリポジトリの原子性は必要なくなり、オブジェクトを永続化するときに何が変更されたかを把握するのがずっと簡単になります。
  2. 書き込み用 (つまりドメイン クラス) と読み取り用 (つまりビューモデル) に別々のクラスを使用します。(ドメイン オブジェクトをビュー モデル クラスにマッピングする代わりに) データベースからビューモデルを直接取得するビュー モデル リポジトリを作成します。

上記の 2 つのことを実装すると、設計が簡素化されるかどうかを確認してください。

于 2011-08-02T22:08:35.420 に答える