Sono un programmatore esperto ma un debuttante con DDD. Ho un progetto che sto cercando di implementare con DDD e la mia comprensione è che c'è qualche ambiguità riguardo all'uso di modelli di dominio e servizi applicativi. Nella più pura delle implementazioni DDD, la mia comprensione è che i modelli di dominio dovrebbero contenere tutte le logiche di business. Tuttavia, questo non mi sembra un obiettivo realistico. In scenari di convalida semplici e simili, tutto va bene, ma l'obiettivo dell'incapsulamento della logica aziendale nei modelli di dominio diventa un po 'scivoloso quando pensiamo alla logica che richiede servizi aggiuntivi come ricerche / persistenza del database e altre dipendenze esterne.
Ad esempio, ho un modello di dominio "Ordine" che ha un metodo "IsValid". Per determinare se un ordine è valido, è necessario eseguire una lettura del database. Per mantenere pulito il modello, non voglio inserire alcun lavoro di database in esso. OK bene - Creo un OrderService per fare il colpo al database e passare un risultato a "IsValid" in modo che la dipendenza dal database risieda con il servizio. Tuttavia, cosa succede se ci sono più accessi al database che dipendono dalla logica aziendale? È appropriato aggiungere questa logica al servizio dell'applicazione? Se è così, sembra che la logica aziendale stia perdendo nel livello dei servizi applicativi che è una violazione del DDD. Tuttavia, se spostiamo la logica all'interno del modello di dominio e facciamo il database colpito lì, stiamo mescolando preoccupazioni e anche violando DDD.
Chiunque abbia esperienza con DDD può fornire informazioni su come affrontare questo tipo di problema? DDD sembra offrire un buon valore, ma sono preoccupato per questo tipo di problemi che portano alla progettazione di "rot".