我试图围绕CQRS我的头。我从提供的代码示例here中绘制。请温柔我对这种模式很陌生。CQRS - 当命令无法解析到域
我正在查看登录方案。我喜欢这个场景,因为它在我读过的任何例子中都没有被真正展示过。在这种情况下,我不知道用户的聚合ID是什么,或者即使有一个,因为我开始的是用户名和密码。
在fohjin例子事件总是从域发射(如果需要)和命令处理程序调用上的域一些方法。但是,如果用户登录无效,我没有任何域可以调用任何东西。同样,大多数(如果不是全部)在fohjin项目中定义的基本Command/Event类都传递一个聚集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();
}
我在CQRS + ES上写了一个MembershipProvider,如果你[想看一看](https://github.com/Iridio/CQRS-ES_MembershipProvider) – Iridio 2012-07-20 11:49:09
谢谢,这对我有帮助。它似乎忽略登录尝试的记录,但不匹配现有的用户名。这是我的问题的核心 – Sam 2012-07-24 04:38:28
失败的尝试存储在Faliedpassword尝试和FailedPasswordQuestionAndAnswerAtwerpt和相对日期时间 – Iridio 2012-07-24 06:37:12