我是CQRS的铁杆粉丝,但有一件事我还是搞不懂:你如何描述CQRS中的登录过程?因为它是一个查询(检查凭证)和一个命令(创建内存中的/sql/任何会话状态)。在这种情况下,我们不能使用异步命令,登录过程必须是同步的。
或者会话的概念在CQRS中并不存在,因为它暗示了某种状态?
Rémi
发布于 2012-12-10 21:58:17
这完全取决于你的情况。
问题是:在您的应用程序中登录意味着什么?
如果这仅仅意味着用户通过了身份验证,并且在他的浏览器中存储了会话cookie,那么您可以通过读取来实现这一点。例如,您的登录过程可能主要是执行Ajax登录调用的客户端JavaScript代码;登录调用将简单地从读取存储(或LDAP存储或其他存储)读取并返回true/false结果。则接收客户端将创建cookie,并且用户现在被认为是已登录的。cookie甚至可能包含用户名信息。
如果登录意味着登录的记录作为事件存储在数据库中,那么登录当然意味着执行Command。在这里,我认为创建一个同步的Command (可能还有一个单独的登录服务,毕竟这是管道)是有意义的。
发布于 2012-12-11 17:13:09
为什么首先要使用CQRS进行身份验证?这真的很不合适。
相反,您可能会用某种身份验证/授权来包装命令处理程序。
请记住,CQRS并不是无处不在的。它将在有意义的有界上下文中使用。用户和会话管理通常不在其中。
https://stackoverflow.com/questions/13798739
复制相似问题