通常在实施CQRS的谈话中,假设命令是事件的诱惑。但是,用户进行的查询可以是事件存储中创建的事件的来源吗?或者这样的动作(当我们需要一个反映查询的事件时)应该使用命令来实现吗?
答案 0 :(得分:1)
但是,用户发出的查询是否可以作为事件存储中创建事件的来源?
不要向精灵求助,因为他们会回答“是”和“是”。
所以,“否”部分:查询的区别在于它们不会更改域模型。在CQRS实施中,查询由读取模型提供服务,甚至可能根本无法访问您的事件存储。
当我们需要一个反映查询的事件时
是的部分:没有法律规定你不能收集查询历史,并将其粘贴在你的活动商店中。
但是我很难过,因为我没有看到域需要反映查询的事件的明显案例。这真的很奇怪。我的猜测是需要一个反映查询的事件,这暗示你的模型已经坏了。
通过探索需求的来源,您可以在此方面取得一些进展。
如果要求来自运营,分析,报告,可用性......那么域模型可能不是该信息的正确位置。
如果要求来自您的域专家(“我们需要捕获这些查询以便模型稍后支持正确的更改”),那么您应该确定哪个实体负责跟踪查询发生的情况,并向该实体发送适当的命令。