Boa*_*ler 7 design-patterns command-pattern cqrs
在查看命令模式时,发现略有不同。也许有些能够更清楚地说明这一点。
当查看四人组时,它说每个命令都有一个执行方法,例如:http : //www.blackwasp.co.uk/Command.aspx, 例如:
myCommand.Execute(myValue);
Run Code Online (Sandbox Code Playgroud)
现在,当我查看如何在CQRS (Greg Young)中使用的命令时,我发现该命令没有执行方法。它们只是某种“命令指令”实例。在 CQRS 网络广播中也说了类似的话。
该命令由域对象处理。喜欢
class myDomainObject
{
void UpdateValue(UpdateValueCommand cmd){
this.value = cmd.value;
}
}
Run Code Online (Sandbox Code Playgroud)
它只是另一个像“CQRS-Command Pattern”这样的 CommandPattern 定义,对吗?所以当谈到一个命令时,它在“common”或“cqrs”上下文中的含义可能略有不同?还是我错过了命令模式或 CQRS 实现?
好问题。
原始形式的命令模式就像 GOF 所说的那样。
在 CQRS 中,命令只是一个 DTO(数据传输对象),因为在大多数情况下,CQRS 是通过处理命令的事件或消息总线实现的。在 CQRS 中,您将命令发送到系统,系统具有某种总线或事件架构,允许自治组件订阅来处理命令;通过这种方式,您可以创建一个责任链,并且它更可靠,例如,使用读写模型。
它更像是命令模式的责任链模式,但您保留了命令模式的优势,因为您仍然拥有命令,并且可以像命令模式一样轻松地实现 UNDO 操作。
此链接可以帮助您更好地了解 CQRS。
这是在 DDD/CQRS 讨论组中提出的,由 Greg Young 回答:
命令模式有多种定义。
您正在查看命令消息模式。唯一的区别是 GoF 将命令的处理与命令本身结合起来。如果在层边界上使用该命令,结果证明这不是一个好主意,因为您的架构和处理是捆绑在一起的
https://groups.google.com/forum/?hl=en#!topic/dddcqrs/Yfrt4OqPUD0
归档时间: |
|
查看次数: |
2482 次 |
最近记录: |