How to avoid repeating fields between command and event?
我不会 – 直到我绝对不能忍受它.
从根本上说,命令和事件aren’t objects,它们是消息 – 跨越边界的状态的表示.我认为你的记忆表现不要忽视这一点很重要.
消息模式的一个特征是它们随着时间的推移而发展,所以你需要注意compatibility.这里是踢球者:事件和命令在不同的时间尺度上发展.
命令消息是域模型与其他进程通信的方式; API部分的更改由公开/弃用功能驱动.
但是在事件源世界中,事件是从先前版本的域到当前版本的消息.它们是我们部署新模型所需支持的一部分,这些模型可以从旧模型中断的地方恢复工作.
所以我会让命令和事件彼此分开 – 它们是不同的东西.
如果你在字段中看到很多重复,那么可能暗示有一些你还没有明确表达的值类型.
CreatePost
{ Post
{ Title
, Contents
}
}
PostCreated
{ Post
{ Title
, Contents
}
}