客户端使用命令总线发送命令,而不是调用应用程序服务



我对向基于CQRS的应用程序传递命令的不同方式的理解正确吗:

1) CQRS应用程序可以通过两种方式接收命令:

a) 它要么实现了命令总线,在这种情况下,客户端将命令放入命令总线并将其发送到服务器,要么实现了"常规"应用程序服务,然后哪个客户端可以调用?

2) 如果不是使用命令总线客户端可以通过简单地调用应用程序服务来发送命令,那么这将表明命令总线只是CQRS的一个实现细节,因此CQRS可以在没有它的情况下实现?

3) 如果CQRS应用程序使用命令总线,那么在这种情况下,应用程序服务是否以命令处理程序的形式存在?

4) 如果客户端不使用命令总线,而是调用常规应用程序服务,那么被调用的应用程序服务有责任创建命令对象并将其委托给适当的命令处理程序?

感谢

CQRS的意思是至少有两个模型:一个用于写(命令),至少一个用于读(查询)。就是这样。如果你想让我们坐服务巴士也可以,直接叫服务也可以。CQRS是一个概念,你想如何实现它取决于你的

只是猜测:

命令总线是一种技术策略,用于将客户端与命令处理程序解耦。在这种情况下,在客户端,我们只需要一个简单的接口。

带有总线和应用程序服务的命令处理程序只是应用层API的两种风格。

应用程序服务是一种"经典"方法,而命令处理程序是在考虑分布式环境的情况下创建的(您可以添加多个节点来处理大量使用的命令)。

两者都与CQRS没有直接关系。

命令总线只是一个抽象层,使客户端只使用一个接口更简单:$commandBus->dispatch($Command);

没有命令总线的应用程序服务示例:https://github.com/VaughnVernon/IDDD_Samples/tree/master/iddd_collaboration/src/main/java/com/saasovation/collaboration/application/forum

最新更新