客户端使用命令总线发送命令与调用应用程序服务

时间:2014-01-16 19:59:16

标签: cqrs

我对不同方式命令的理解是否可以正确地传递给基于CQRS的应用程序:

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

a)它是否实现了命令总线,在这种情况下,客户端将命令放入命令总线并将其发送到服务器,或者它实现“常规”应用程序服务,然后客户端可以调用?

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

3)如果CQRS应用程序正在使用命令总线,那么我们不能认为在这种情况下,应用程序服务以命令处理程序的形式存在吗?

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

感谢

4 个答案:

答案 0 :(得分:2)

你感到困惑,CQRS只意味着至少有2个模型:一个用于写入(命令),至少一个用于读取(查询)。而已。如果您想要我们的服务巴士是好的,直接拨打服务也是可以的。 CQRS就是这个概念,你想要如何实现它取决于你

答案 1 :(得分:1)

只是一个猜测:

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

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

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

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