2010-11-19 10 views
5

私は、内部ロジックを処理した後、データを更新するために他のシステムにイベントを公開するWeb CRUDアプリケーションを作成しています。CQRSインテントコマンドイベント

私はCQRSを実装する最初の段階にあり、「保存」ボタンが1つしかないフォームでユーザーの考えられるすべての意図に対して特定のコマンドを作成する必要があることが奇妙に聞こえます。つまり、私の必要条件では不要な意図をキャプチャするための多くのコマンド(各プロパティまたは値オブジェクト用)が必要ですが、サブスクライブする予定の次のプロジェクトでは必要です。私は、私の限られた文脈に必要なものだけをやることのファンです。

もう1つの考慮事項: データが変更されたかどうかを比較するには、セッションを使用する必要があります。保存した後にデータを偽装すると、UIの間違ったデータを示す並行処理状況が隠されます。

EDIT:グレッグ・ヤングは、一部の画面だけでCRUDであり、デフォルトの動作として更新を行うことで、悪い何もないことを示唆しているところ、私はちょうどthis threadを発見しました。

答えて

6

なぜCQRSを使用しますか?すべてのケースでうまく機能しません。

特にCRUDを使用している場合は、CQRSをまったく試してみる必要はありません。それだけではうまく収まらないでしょう。ユーザーの意図がUI側で明示的に取得され、意味のあるコマンドでサーバーに渡されると、CQRSは多くのメリットを得ます(FieldNameUpdatedではなく、CustomerRelocatedToNewAddressまたはCustomerAddressCorrected)。これには、デザインにドメイン駆動型設計手法を使用する必要があります)。

+1

このようにしています。 私のCRUDプロジェクトは、トラフィックの多いウェブサイトに正しいデータを表示するための内部の「設定ツール」なので、イベントを公開する必要があります。私の完璧な解決策は、ちょうどDDD、CQRSなしでこのプロジェクトを達成し、私の範囲内のそれぞれの本意のためにイベントを公開することです。ウェブサイトは、何千人ものユーザーを必要とするため、CQRSを使用して達成する必要があります。私は、私の要求が「保存ボタン付きのフォームを作成する」と言ったときに、なぜたくさんのコマンドを作成しなければならないのかわかりません。 – Cesar

+1

CQRSの唯一の理由がスケーラビリティならば、もっと単純なものを試すことができます。私は:いくつかの種類のメモリキャッシュを使用してWebサイトの負荷を軽減する(または、DBに重点を置かないようにWebビューを公開する - つまりJSON on CDN)、またはデフォルトのサーバーキャッシュを微調整するだけです。複雑なビジネスシナリオを処理し、規模を拡大し、豊富なBI機能を持ち、急速に変化する要件に適応するために、プロジェクトがこれらのうちのいくつかを処理する必要があるときに、CQRSが通常入ります。 –

+0

シナリオは複雑で、システムはすでにmemcacheで実行されています。私たちはCQRSの実践から多くの利益を得ることができますが、この決定について疑う余地はありません。ウェブサイトはCQRSで再構築されます。疑わしいことは、主にウェブサイトを囲む小規模なプロジェクトや、大きなコマンドや小さなコマンド(イベントについても同じ)を送るべきかどうかを指しています。このすべての考えは、DDDの強い背景を持つ開発者、有界のコンテキスト、そして成功をもたらすものです。今私はすべてのインテントをコーディングし、セッションを処理してデータのバージョンを保持する必要があります。 (私はあなたのブログを読んでいるのが好きです) – Cesar

関連する問題