CQRS中的新/读标志

时间:2011-12-07 10:50:38

标签: cqrs

我目前正在为(基本上)基于HTML的协作套件起草一个概念,我计划使用CQRS实现。该软件将包含可以发送给用户的消息(显然可以是读取或未读取)和其他元素,如果它们是在最后一次用户登录后创建的,则应标记为“新”。 几乎没什么新东西,但我不太确定如何使用CQRS正确实现。据我了解,任何类型的更改都应该毫无例外地通过命令实现。但是为正在访问的每个(新)元素创建命令似乎有点过多,更不用说开销了。 我不知道我是否需要它,但是在元素上实现Last-Accessed Timestamp的最佳方法是什么。基本上与上述问题相同,不同之处在于每次访问元素时都会发生更改,而不仅仅是每个用户的第一次。

CQRS似乎是一个很棒的概念,但它确实需要更多的学习资料。不能等到一本书被释放:)

此致

[编辑]没有人?不会想到这是一个如此复杂的问题。

1 个答案:

答案 0 :(得分:0)

我假设您正在使用事件源,在这种情况下,一旦您允许查询服务/事件处理程序引发适当的事件,那么这将变得相当容易解决。

对于你的消息/元素;处理元素的特定创建事件时,可以添加到现有或创建其他事件处理程序,以存储到消息读取模型,其状态为 new 以及有关该元素的适当信息。

作为用户登录的一部分,我不明白为什么你不能提出一个用户登录的事件(来自安全/查询服务,取决于你的实现身份验证的方式)来说用户已经登录。事件处理程序可以捕获它并将最后登录时间戳写入特定的用户最后登录读取模型。

此外,用户登录的事件处理程序需要将所有消息(针对该用户)更新为未读状态。看到我们在用户登录时更改消息的状态,您是否仍需要存储上次登录的时间戳?

对于您上次访问的时间戳,也许您可​​以将其用于查询服务,因为您的不同元素的查询已完成。使用元素id /类型信息提升查询已完成的事件。