共通ロジックを共有するいくつかのコマンドがあるとします。たとえば、私は文書にいくつかの状態があります。いくつかの州では可能な変異操作がありますが、その状態によってはロジックの一部が異なります。 1つのCommand
をIf
ステートメントを4つ以上のステートに使用することは混乱します。各操作の方が優れているため、別々のコマンドを作成できますが、一般的なロジックはどうすればよいでしょうか?CQRS一般的な操作を行うコマンド - 重複したコード
DBからデータをフェッチし、検証し、いくつかのサイド文書を生成し、監査テーブルなどに書き込む必要があります。だから、それは普通の場所でなければならないと思われ、無意味なものを作ることは最悪の選択です。Helper
クラスです。私はこの操作がトランザクションを必要とすることができる/できないと仮定します。
私はhttp://scrapbook.qujck.com/holistic-abstractions-take-2/とCQRS code duplication in commandsを読みました。私は他のオプションを探しています。
あなたはそのユーザーがその_Document_で「更新」を行う特権を持っていることを確認する必要があるのですが、コマンドを発行する前に確認する必要があります。次に、そのコマンドを実行するために必要なすべてのデータを、前にフェッチしてパラメータとして渡す必要がありますか?だから、潜在的にすべての重複したコードはコマンドの外にあるべきですか? – RedgoodBreaker
さて、コントローラー/アクションレベルでいくつかのセキュリティチェックを行うことができます。これはWeb APIで簡単に行うことができます。独自の "検証"ロジックなどを作成する必要がありますが、これは多くの作業ではありません。また、最初のチェックに合格し、余分な "ビジネスセキュリティチェック"が必要な場合は、CommandHandlerで行うことができます。また、私はCommandHandlerを呼び出す前にDecoratorsクラスでそれを行うのが好きです。タマネギを考えて、あなたのコマンドハンドラを中心に近づけてください。あなたの「セキュリティチェック」は、ほとんど外の層にあります。デコレータはあなたのための解決策かもしれません。 –
あなたはあなたが書くものの良い例を見たことがありますか?私が提供したリンクを数えない? – RedgoodBreaker