質問

CQRSの一般的な概念を取得しますが、実際の問題に対処するために、例のコードとスライドデッキを超えて移動することに関して、いくつかの質問があります。

  1. 検証

    データベースから値をチェックすることを含むコマンドの検証を行う必要がある場合、あなたは何をしますか?サービスの登録を取得するには、一意のメールアドレスを入力する必要があります。私が聞いたことの1つは、ユーザーが重複したメールアドレスを入力する可能性は非常に低いため、コマンドを処理するときにそれを処理し、「ごめんなさい」というメールを送信するか、おそらくパスワードをリセットすることを提案することです。したがって、このプロセスは、検証のためにREADMODELを持つことを避けます。しかし、コマンドハンドラーの重複ケースにどのように対処しますか?それでは、それが重複していることをどうやって知っていますか? readmodelをチェックしますか?そもそも使いやすくするためにそれを使用したこともあります。

  2. 機能/修正バグの変更

    コマンドの仕組みを変更したり、バグを修正する必要がある場合はどうなりますか?付録のみの哲学では、すべての古いコマンドとコマンドハンドラーをどうしますか? _legacyに名前を変更して隠すことはできません。これに対処するために、どのようなエレガントなソリューションがありますか?

ありがとう

役に立ちましたか?

解決

  1. 見る http://codebetter.com/blogs/gregyoung/archive/2010/08/12/eventual-consistency-and-set-validation.aspx このまさにこのトピックに関するさまざまな議論のためのCQRSメーリングリスト。
  2. イベントバージョン(イベントバージョンと同じ意味でコマンドバージョンの必要はありません)については、CQRSメーリングリストでも説明しています。イベントは、コマンドではなく、集計の現在の状態に到達するために再生されます。このようにして、あなたの機能は進化する可能性があります。過去を変える方法はありませんが、現在/未来を変える方法があります。奇妙な場合、別の方法で状態の追跡を開始する必要があります。明示的なコマンドを提供します。イベントの新しいプロパティの場合、新しいデータベース列のようにデフォルトを提供するだけです。これらの新しい値がすでに存在する状態に基づいている場合は、明示的なコマンドをモデル化してそれらを事前に計算します。利点は、これを非同期的に行うことができるのに対し、データベースのアップグレードではコードも変更できます。それがどのように機能するかは、CQRSメーリングリストでよりよく尋ねられます。1つの警告!イベントの調達を軽視しすぎないでください。 CQRSだけで取得できます。ほとんどの時間CQRSが行うと、人々がCQRS+ESに切り替えているのが見えます。

groups.google.com/group/dddcqrsに来て、助けを得てください。もう1つの有用なリソースはCQRSINFO.comです

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top