Cqrs和rest最佳实践

Cqrs和rest最佳实践,rest,cqrs,Rest,Cqrs,是否有人对具有put/post的CQR有最佳实践模式,特别是客户端在发送命令/事件后正在对更新的资源执行get。。。您是否允许/要求客户端保留已更新资源的本地副本,并在get响应中发送上次更新的时间戳?或者确保get包含未处理的命令?当然,如果另一个客户端检索到相同的资源,则可能/不会获取更新的资源。 什么对你最有效? 您是否会应对get ALL检查命令队列增加的复杂性 是否有人对具有put/post的CQR有最佳实践模式,特别是客户端在发送命令/事件后正在对更新的资源执行get 在网站上你会怎

是否有人对具有put/post的CQR有最佳实践模式,特别是客户端在发送命令/事件后正在对更新的资源执行get。。。您是否允许/要求客户端保留已更新资源的本地副本,并在get响应中发送上次更新的时间戳?或者确保get包含未处理的命令?当然,如果另一个客户端检索到相同的资源,则可能/不会获取更新的资源。 什么对你最有效? 您是否会应对get ALL检查命令队列增加的复杂性

是否有人对具有put/post的CQR有最佳实践模式,特别是客户端在发送命令/事件后正在对更新的资源执行get

在网站上你会怎么做

通常情况下,您会执行GET来加载资源,这将为您提供版本0,可能会在元数据中包含一些内容,以让您知道您收到的表示的版本。如果您再次尝试获取资源,则泛型组件可以从标题中看到您的副本是最新的,并将向您发送一条消息,表明这一点()

当您发布到该资源时,一个成功的响应会让所有中间组件知道先前缓存的资源副本已被删除,因此下一个GET请求将检索一个包含所有修改的新副本

这一切都非常有效,在CQRS设置中,读请求遵循与写请求不同的路径。读取端最终会自我更新,所以关键在于如何避免将过时的表示返回给知道应该更改的客户机

你要找的类比是;我们希望写端让客户端知道操作成功了,并且有一个资源可以用来获得更改

也就是说,写端返回一个指示命令成功的响应,并提供一个包含数据的链接,读模型可以使用这些数据来确定其副本是否是最新的

客户机的工作是跟踪链接,就像REST中的其他地方一样

当然,提供的链接将是一些安全操作,指向读取模型。读取模型将链接中的信息与当前可用表示的元数据进行比较;如果读取的模型副本是最新的,它将返回该副本,否则它将返回一条消息,告诉客户机重试(可能在某个时间间隔之后)

简而言之,我们在读取模型上使用轮询,等待它赶上。

也许这有帮助