我正试图围绕CQRS。我从此处提供的代码示例中绘制。请温柔我对这种模式很陌生。
我正在查看登录方案。我喜欢这种情况,因为在我读过的任何示例中都没有真正体现出来。在这种情况下,我不知道用户的聚合 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();
}