Sto impostando i miei primi passi nella progettazione guidata dal dominio, ho comprato il libro blu e tutto il resto e mi ritrovo a vedere tre modi per implementare una determinata soluzione. Per la cronaca: non sto usando CQRS o Event Sourcing.
Supponiamo che una richiesta dell'utente arrivi nel livello di servizio dell'applicazione. La logica aziendale per quella richiesta è (per qualsiasi motivo) separata in un metodo su un'entità e un metodo su un servizio di dominio. Come devo fare per chiamare quei metodi?
Le opzioni che ho raccolto finora sono:
- Consentire al servizio dell'applicazione di chiamare entrambi i metodi
- Usa il metodo injection / double dispatch per iniettare il servizio di dominio nell'entità, lasciando che l'entità faccia il suo dovere e poi lascia che chiami il metodo del servizio di dominio (o viceversa, lasciando che il servizio di dominio chiami il metodo sull'entità)
- Genera un evento di dominio nel metodo entità, un gestore del quale chiama il servizio di dominio. (Il tipo di eventi di dominio di cui sto parlando sono: http://www.udidahan.com/2009/06/14/domain-events-salvation/ )
Penso che siano tutti fattibili, ma non sono in grado di scegliere tra di loro. Ci sto pensando da molto tempo e sono arrivato a un punto in cui non vedo più le differenze semantiche tra i tre. Conoscete alcune linee guida su quando usare cosa?