我只是想知道我要尝试实现的设计是否有效的CQRS。
我将拥有一个查询处理程序,该处理程序本身将向其他子处理程序发送更多查询。它的主要任务是汇总来自多个服务的结果。 从处理程序中发送查询可以吗?我已经在我的应用程序中想到了3个层次的深层次结构。
答案 0 :(得分:1)
否,MediatR是为单个级别的请求和处理程序设计的。更好的设计可能是创建某种服务/管理器,该服务/管理器使用MediatR调用多个隔离的查询并汇总结果。除了可能不是请求处理程序本身,而是多个请求处理程序的集合之外,实现可能与您所想的相似。
答案 1 :(得分:0)
这将严重影响系统的弹性和计算时间,并增加耦合。
如果任何子处理程序失败,则整个处理程序将失败。如果查询是通过同步方式发送的,则总的计算时间就是各个查询时间的总和。
重用子处理程序的一种方法是在客户端请求之外在后台查询它们。这样,当客户请求到来时,您已经在本地获得了数据,从而增加了弹性和计算时间。您将只剩下耦合器,但是如果重用比耦合器重则值得。
我不知道在MediatR中是否有任何可能,只是系统体系结构的一般原理。