CQRS の一般的な概念は理解できましたが、実世界の問題に対処するためのサンプル コードやスライド デッキを超えて移動することに関しては、いくつかの質問があります。
検証
データベースからの値のチェックを伴うコマンドの検証を行う必要がある場合、何をしますか? サービスに登録するには、固有のメール アドレスを入力する必要があります。私が聞いた議論の 1 つは、ユーザーが重複した電子メール アドレスを入力する可能性は非常に低いため、コマンドを処理するときにそれを処理し、「申し訳ありません」という電子メールを送信するか、パスワードのリセットを提案することです。したがって、このプロセスでは、検証のために readmodel を使用する必要がありません。しかし、コマンド ハンドラーで重複したケースをどのように処理するのでしょうか? それが重複していることをどのように知っていますか?readmodel をチェックしますか? 使いやすさを向上させるために、最初からそれを使用した方がよいでしょう。
機能の変更/バグ修正
コマンドの動作方法を変更したり、バグを修正したりする必要がある場合はどうなりますか? 追加のみの哲学では、すべての古いコマンドとコマンド ハンドラーをどうすればよいでしょうか? それらの名前を _legacy に変更して非表示にすることはできません。そうしないと、イベントの逆シリアル化が機能しません。これに対処するためのエレガントなソリューションは何ですか?
ありがとう