【发布时间】:2014-02-11 14:29:21
【问题描述】:
假设我有一个基于 CQRS 的系统,它带有一个我想与一些外部设备集成的 Web UI,比如一个 Arduino 板。
基本上,我可以想到三种情况:
- 当用户点击 Web UI 中的按钮时,Arduino 会做一些事情。
- 当用户按下硬件按钮时,域应做出反应并更新 UI。
- 当用户按下硬件按钮时,UI 会更新。
如何为这些场景建模?
恕我直言,这很简单:UI 发出命令,业务逻辑运行,发出事件,Arduino 正在监听事件。基本上,Arduino 只不过是一个事件去规范化器。这是正确的方法吗?
恕我直言,这也很简单:Arduino 发出命令,将其发送到命令总线,并运行与场景 1 相同的过程。基本上,对于 CQRS 系统来说,命令是否到来没有区别来自其他任何东西的网络用户界面。
这是我真正不确定的地方:假设 Arduino 自己处理按钮按下,并闪烁 LED 作为响应。我只是想确保我的应用程序注意到“LED 一直在闪烁”。这不是命令(因为闪烁已经发生),而是一个事件。我该怎么办这个活动?我是否只是将其存储在事件存储中并绕过我的域?这对我来说似乎是非常错误的。我是否发出一个伪命令,将其 1:1 转换为匹配事件?这将起作用并且不会绕过域,但它也感觉不对,因为它实际上不是命令。我该怎么办?
对这些事情有什么建议吗?
【问题讨论】:
-
您能多谈谈您的读/写模型(相同,不同...)吗?一种方法可以是在处理命令之后......将结果规范化为读取模型(Arduino板的读取模型)并发送(或请求)
标签: domain-driven-design integration cqrs