【发布时间】:2012-04-11 14:11:39
【问题描述】:
我们在我们的应用程序中使用事件溯源,并且严格需要跟踪对我们的许多对象发起更改的用户。目前我们有这样的代码
class Order {
setNameBy(newname, User user) {
applyChange(new OrderRenamed(user.id, newname));
}
:
}
由于我们的大部分方法都是这样的,所有的方法都是这样调用的
setNameBy("a new name", SessionContext.currentUser)
我们正在考虑访问域对象内的 SessionContext。即:
setNameBy(newname, User user) {
applyChange(new OrderRenamed(user.id, newname));
}
变成
setName(newname) {
applyChange(new OrderRenamed(SessionContext.currenUser.id, newname));
}
我个人更喜欢后面的方法签名,因为它接缝更自然,另一方面,访问 Domain 对象内的 SessionContext 感觉有点混乱。
那么,在 DDD/CQRS 应用程序中,您如何最好地处理此类会话数据?访问域对象中的 SessionContext 是否可以,还是应该使用其他方法(如事件丰富)将此信息添加到域发出的事件中?。
【问题讨论】:
标签: domain-driven-design cqrs event-sourcing