CQRSに頭を悩ませようとしています。ここで提供されているコード例から描画しています。私はこのパターンにとても慣れていないので、優しくしてください。
ログオンシナリオを見ています。私が読んだどの例でも実際には示されていないので、このシナリオが好きです。この場合、ユーザーの集約IDが何であるか、または集約IDが存在する場合でも、最初はユーザー名とパスワードだけであるため、わかりません。
fohjinの例では、イベントは常にドメインから発生し(必要な場合)、コマンドハンドラーはドメイン上のメソッドを呼び出します。ただし、ユーザーログオンが無効な場合、何も呼び出すドメインがありません。また、fohjinプロジェクトで定義されている基本コマンド/イベントクラスのすべてではないにしても、ほとんどが集約IDを渡します。
LogonFailureイベントの場合、LogonAuditレポートを更新したい場合があります。
だから私の質問は:特定の集合体に解決されないコマンドをどのように処理するのですか?それはどのように流れますか?
public void Execute(UserLogonCommand command)
{
var user = null;//user looked up by username somehow, should i query the report database to resolve the username to an id?
if (user == null || user.Password != command.Password)
;//What to do here? I want to raise an event somehow that doesn't target a specific user
else
user.LogonSuccessful();
}