3

ビデオ デマンド システムの一部であるアーカイブをモデル化しています。複数のユーザーがフォルダーの作成、ビデオのアップロード、フォルダーの再構築などを行うことができる Windows エクスプローラーのようなアーカイブを考えてみてください。ユーザーがタスク (フォルダーの名前変更、フォルダーの移動、フォルダーの表示など) を実行できるかどうかを決定するビジネス ルール (アクセス許可) があります。 )。

各フォルダーを集約ルートとしてモデル化し、あるフォルダーを別のフォルダーに移動すると、2 つの集約ルートに影響するように見えます。

私が理解していることから、イベントを送信して他の集計を変更する必要があります。ただし、2 番目のフォルダーも変更された場合 (システムから削除または削除された場合など)、最初の集計の変更を元に戻すには、補正コマンドを送信する必要があります。

移動 (両方の集計での変更) を一緒に処理するある種のトランザクションを好みます。それが失敗した場合、少なくとも移動の最初の部分を元に戻したり、イベントの最初の部分を発生させたりする必要はありません。

これにより、CQRSは私が解決しようとしている問題に適していますか? もしそうなら、私の集計が間違っている可能性がありますか?

4

1 に答える 1

3

DDD では、Aggregate がトランザクション境界を表す必要があります。複数の集計の関与を必要とするトランザクションは、多くの場合、モデルを改良する必要があるか、トランザクション要件を確認する必要があるか、またはその両方を示す兆候です。

これは純粋な DDD の問題であり、CQRS やその他のアーキテクチャ パターンとは無関係です。

一方で、ファイルを含むフォルダーのような階層構造を本当に作り直す必要があるのでしょうか? 私が知る限り、これはかなり長い間解決された問題です。おそらく、その特定のドメインをもう一度形式化することには、固有の利点はありません。

DDD のパターンを使用したドメイン モデリングは、(1) ドメインが非常に複雑であり、(2) ドメインをモデリングすることで、類似のアプリケーションに対して実際の (競争力などの) 優位性をソフトウェアに与える境界のあるコンテキストで最も意味があります。その特定の境界付けられたコンテキストがかなり単純であり、および/またはそれを改造しても大きな利点がない場合は、可能な限り単純なソリューションを使用することをお勧めします。

これは、ドメイン駆動設計における最も重要な概念である、コア ドメインに焦点を当てることを表しています。

于 2012-06-23T13:09:07.977 に答える