我认为CQRS中的command
与command pattern中的命令有很大不同吗?
根据我的阅读,CQRS中的命令是没有行为的数据传输对象(DTO)。但是命令模式中的命令本质上只是 有行为吗?
调用命令模式命令"处理程序"是否明智?哪个将使用Handler
和execute()
方法实现undo()
接口(因此很明显我正在实现某种形式的命令模式)。并为CQRS命令保留Command
?
答案 0 :(得分:2)
CQRS中的 C 具有更改模型的含义,它与命令模式无关,尽管CQRS应用程序很多时候也在使用所述模式。 CQRS仅涉及模型:有一个适用于更改(域,业务)和更简单的查询。
没有'保留'关键字,当你说CQRS时,每个知道其含义的人都会知道它与不同的模型有关。这些更改可以由处理的命令触发,但通常ppl正在使用 Command 来更改模型的所有消息(以及描述所发生更改的所有消息的事件)。
答案 1 :(得分:1)
另一点值得注意的是,通常命令不是DTO,因为它是具有getter和setter的属性桶。它们通常被实现为不可变类。这使得一个更可靠和可预测的系统更容易测试,并在必要时进行多线程。
有关此内容的更多信息以及对典型CQRS系统各部分的概述,请查看CQRS - A Step-By-Step Guide to the Flow of a Typical Application
希望你觉得有用。