我开始使用CQRS,我发现我的事件类定义几乎与1到1的命令定义相匹配。除了明显的代码重复之外,我正在试图弄清楚我做错了什么。肯定有些情况下事件与命令不匹配......但不是很多。
采用简单的CUD方案:
命令类:
活动类:
对此有何建议?
我正在使用事件存储,如果这有任何区别。
感谢。
答案 0 :(得分:5)
您通常不会将CQRS用于CRUD方案。有一些简单的工具和模式可以创建CRUDy应用程序。
CQRS为行为丰富的场景带来了许多优势,其中动词不是创建,读取,更新,删除,而是类似于真实行为。喜欢 PromoteEmployee 或 BlacklistVendor 。
一旦开始对一个行为丰富的域进行建模,可能仍会有许多核心命令/事件 - 这不是一件坏事 - 但你也会发现命令和结果事件的大小都可能非常不同(包含数据)和数字。
答案 1 :(得分:1)
为了向Dennis Traub的回答添加一些内容,CQRS扩展了您将代码结构化为规范领域的方式,即UI如何工作。点并非所有UI都是CQRS友好的;你想要更多符合Task-based-UI's rather than CRUD-y UI's的内容。
从CRUD-y UI开始,您可能会在使用CQRS时感到沮丧。