Ich mache meine ersten Schritte im bereichsorientierten Design, kaufe das Blue Book und alles und sehe drei Möglichkeiten, um eine bestimmte Lösung zu implementieren. Um es kurz zu machen: Ich verwende weder CQRS noch Event Sourcing.
Angenommen, eine Benutzeranforderung wird in die Anwendungsserviceschicht eingegeben. Die Geschäftslogik für diese Anforderung ist (aus welchen Gründen auch immer) in eine Methode für eine Entität und eine Methode für einen Domänendienst unterteilt. Wie soll ich vorgehen, um diese Methoden aufzurufen?
Die Optionen, die ich bisher gesammelt habe, sind:
- Lassen Sie den Anwendungsdienst beide Methoden aufrufen
- Verwenden Sie die Methode Injection / Double Dispatch, um den Domänendienst in die Entität zu injizieren, und lassen Sie die Entität das Richtige tun und dann die Methode des Domänendienstes aufrufen (oder umgekehrt, lassen Sie den Domänendienst die Methode für die Entität aufrufen).
- Löst ein Domänenereignis in der Entitätsmethode aus, dessen Handler den Domänendienst aufruft. (Die Art der Domain-Ereignisse, über die ich spreche, sind: http://www.udidahan.com/2009/06/14/domain-events-salvation/ )
Ich denke, das ist alles machbar, aber ich kann mich nicht zwischen ihnen entscheiden. Ich habe lange darüber nachgedacht und bin zu einem Punkt gekommen, an dem ich die semantischen Unterschiede zwischen den drei nicht mehr sehe. Kennen Sie einige Richtlinien, wann Sie was verwenden sollen?