Design patterns 查询句柄属于哪一层?

Design patterns 查询句柄属于哪一层?,design-patterns,cqrs,Design Patterns,Cqrs,这个问题的答案表明,每个小部件应该有一个ReadModel(或者投影,我假设它们是相同的) 但是如果是这种情况,那么这不会将查询句柄移动到表示层,这样每个小部件就有一个查询句柄(在我的例子中是Angular中的组件) 更具体地说:查询句柄应该具有类似于getReadModelForProjectPageSidebarById()的函数,还是应该具有类似于getProjectById()的函数?如果后者是真的,这难道不意味着需要额外的一层来将ReadModel映射到小部件/组件可以使用的ViewM

这个问题的答案表明,每个小部件应该有一个ReadModel(或者投影,我假设它们是相同的)

但是如果是这种情况,那么这不会将查询句柄移动到表示层,这样每个小部件就有一个查询句柄(在我的例子中是Angular中的组件)


更具体地说:查询句柄应该具有类似于
getReadModelForProjectPageSidebarById(
的函数,还是应该具有类似于
getProjectById(
的函数?如果后者是真的,这难道不意味着需要额外的一层来将ReadModel映射到小部件/组件可以使用的ViewModel吗?

请确保这个想法是明确的:每个“写模型”可以有多个“读模型”

从逻辑上讲,所发生的事情与“非CQR”案例并没有太大区别;我们将获取由write模型记录的信息,将其转换为有趣的表示,并将其返回给客户机(在您的示例中,返回给小部件)

但这并不一定要“现场”完成;我们可以通过返回表示的缓存副本来响应查询

如果你考虑Web上的资源——HTTP已经对缓存有了深入的理解。当HTTP请求从缓存中得到响应时,它基本上是一个纯粹的查询表示处理,不是吗

因此,如果您通过从缓存返回表示来处理查询,那么处理程序将非常浅

您仍然需要在某个地方编写代码,以获取write模型的“真相之书”表示,并将其转换为适合缓存的表示。但是代码的执行不必与查询同步——您可以进行新鲜度与延迟的交易

那么让我看看我是否理解正确,读取模型属于表示,而查询处理程序属于应用层?你认为下面的说法有道理吗

那是。。。。那一点也不坏


或者更重要的是,我的问题中的两个查询处理函数都不正确。正确的函数调用将沿着句柄()执行。因此,它实际上是对读取模型的请求,而不是对特定资源/实体(如项目或用户)的请求


是的。

我的问题可能和我的答案有点关系,我的答案非常有趣!那么让我看看我是否理解正确,读取模型属于表示,而查询处理程序属于应用层?你认为下面的说法有道理吗?或者更重要的是,我的问题中的两个查询处理函数都不正确。正确的函数调用将按照
句柄(
的思路执行。因此,它实际上是对读取模型的请求,而不是对特定资源/实体的请求,例如
Project
User
?Mind=blow。我知道我在什么地方遗漏了什么东西,就是摸不着。非常感谢。