我有一个使用CQRS构建的项目,但是我不知道如何实现一个用例。
用户需要能够进行查询,该查询将返回一组数据供他们查看。但是,我还需要保存他们同时获得的数据。
有没有一种方法可以在查询中做到这一点而又不违反CQRS的原则?还是查询和命令需要一个接一个的两个单独的API调用?
答案 0 :(得分:1)
在CQRS中,您的客户既可以执行命令,也可以执行查询。该客户端不是必需的UI。
它可以是一个API终结点处理程序,它将
答案 1 :(得分:0)
有没有一种方法可以在查询中做到这一点而又不违反CQRS的原则?
要视情况而定。
如果“保存数据”的意思是“对域模型进行一些更改” ...那么,那将很奇怪。
提出问题不应改变答案。 -Bertrand Meyer
另一方面,日志记录/遥测是跟踪应用程序活动的非常普通的方法,所以应该没事。
在不可靠的网络上,您需要注意一些realities of a distributed system(如果遥测系统不可用,该怎么办?记录未实际到达的查询的后果是什么?客户端(因为网络不可靠)。
答案 2 :(得分:0)
正如@VoiceOfUnreason所说,在查询数据时影响域更改可能有些奇怪。
但是,可能是您可以将其扫视一下。
例如,也许可以查询各种预测。我们希望存储该预测。然后,好像查询导致我们不得不保存结果。这似乎在某种程度上破坏了CQS,因为每个查询都会导致状态改变。
如果我们四处搜寻,然后首先通过域处理请求预测,然后 产生结果,甚至是结果的 pointer ,则查询将是您可以多次处理数据而又不会“破坏” CQS的功能。