Sto provando a costruire un'architettura in cui dispongo di un progetto di dominio con tutti i miei modelli di dominio, un progetto di infrastruttura con i miei servizi e infrastruttura.Entità con i miei archivi ed entità.
Tuttavia, sono un po 'confuso su quale sia il modo migliore per passare oggetti tra i diversi livelli.
Il livello di presentazione conosce solo il dominio e il livello / infrastruttura di servizio e passa gli oggetti dominio al servizio. Ed è qui che sono in dubbio.
Diciamo che ho:
- DomainProduct
- EntityProduct
- ProductController
- ProductService
- ProductRepository
Domanda: Dove mappare gli oggetti tra i modelli di dominio e le entità? Io chiamo il servie con un modello di dominio, ma il servizio chiama il repository con un modello di dominio, o lo mappo a un'entità e chiamo il repository con quello?
- Controller - > Modello di dominio - > Servizio
- Servizio - > Modello di dominio - > Repository
o
- Servizio - > Entità - > Repository
(e vice-versa)
Caso: eliminazione di un prodotto
Qui chiamerei semplicemente il servizio dal controller con l'ID del prodotto che deve essere cancellato. Quindi il servizio:
- Chiama Elimina (id) nel repository
o
- Ottiene il prodotto dal repository tramite l'ID
- Chiama il metodo delete sul repository con il modello?
Tuttavia, non è una voilà in DDD? Devo prima ottenere DomainProduct dal livello di servizio, quindi chiamare Delete con quel DomainProduct? Questo sembra ridondante e non necessario.
Sono un po 'confuso su come è fatto meglio. Mi piace molto l'ID e le entità che passano tra il servizio e il repository. Ma penso che sia una violazione.
Puoi aiutarmi?