1

過去数か月間、DDD と CQRS を使用してアプリケーションを実装してきました。私がまだ苦労していることの 1 つは、特に異なるタイプの複数のデータソースに対して、データを永続化する最善の方法です。

ここまでは、DAL の複数の部分実装を含む DAL インターフェイス レイヤーを使用してきました。次に、ドメイン レイヤーで、リポジトリを使用してドメイン オブジェクトを構築し、n 個の DAL に保存します。ページネーションや検索などのより高度な操作に到達するまで、これは問題なく機能します。これにより、データをマッピングするだけでなく、順序付け/検索/ページ付け基準をマッピングする必要がありました。

永続化レイヤー (IE エンティティ フレームワーク、ファイルシステム、Web サービス) が何であれ、DDD レイヤーに公開し、リポジトリに直接アクセスさせて、次のようなものに組み込まれている機能を利用できるようにする必要があるという意見を読みました。 ORM。これは私には漏れやすい抽象化のように感じます。

これらの問題を解決するのに役立つ、見落としているパターンはありますか?

4

1 に答える 1

3

永続化レイヤーが何であれ (IE Entity Framework、ファイルシステム、Web サービス) を DDD レイヤーに公開し、リポジトリにそれらに直接アクセスさせるべきだという意見を読みました。

ドメインを永続性の詳細から保護するために、リポジトリ パターンが存在します。確かに、そこに余分な抽象化レイヤーは必要ありません。どの永続化テクノロジを使用していても、リポジトリは詳細を認識できます。

次に、ドメイン レイヤーで、リポジトリを使用してドメイン オブジェクトを構築し、n 個の DAL に保存します。ページネーションや検索などのより高度な操作に到達するまで、これは問題なく機能します。

あなたは CQRS アプリケーションを実装していると言いました。読み取りモデルはありませんか?リポジトリは、読み取りではなく、書き込みのビジネス ケースを満たすためにエンティティをリハイドレートしています。

于 2015-02-06T12:57:07.250 に答える