Wir verwenden Ereignisbeschaffung in unserer App und müssen auch den Benutzer verfolgen, der Änderungen an vielen unserer Objekte initiiert hat. Zur Zeit haben wir Code wie dieserZugreifen auf Sitzung in Domänenobjekt
class Order {
setNameBy(newname, User user) {
applyChange(new OrderRenamed(user.id, newname));
}
:
}
Da die meisten unserer Methoden wie diese sind und alle von ihnen sind wie diese die Session Zugriff innerhalb des Domain-Objekt
setNameBy("a new name", SessionContext.currentUser)
wir, wo Kontemplation genannt. das heißt: es fühlt sich ein bisschen chaotisch, um das Session innerhalb des Domain-Objekt
setNameBy(newname, User user) {
applyChange(new OrderRenamed(user.id, newname));
}
wird
setName(newname) {
applyChange(new OrderRenamed(SessionContext.currenUser.id, newname));
}
Ich persönlich bevorzuge die später Methodensignatur wie es natürlicher auf der anderen Seite Nähte.
Wie also behandeln Sie Sessiondaten wie diese am besten in DDD/CQRS Apps? Ist es OK, auf den SessionContext in den Domänenobjekten zuzugreifen, oder sollte ich andere Methoden wie die Ereignisanreicherung verwenden, um diese Informationen zu den von der Domäne ausgegebenen Ereignissen hinzuzufügen?