我們在我們的應用中使用事件採購,並且也嚴格需要跟蹤對我們許多對象發起更改的用戶。目前,我們有這樣在域對象中訪問會話
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));
}
我個人比較喜歡後一種方法的簽名,因爲它的接縫,另一方面更自然的感覺有點亂來訪問SessionContext域對象內。
那麼如何在DDD/CQRS應用程序中最好地處理會話數據呢?訪問Domain對象中的SessionContext是否可以,或者是否應該使用其他方法(如事件豐富)將此信息添加到從域發出的事件中?