Ho difficoltà a capire dove i servizi applicativi si integrano con l'architettura DDD e Onion. Fino a qualche giorno fa ho pensato a loro come parte del modello di dominio, ma ho iniziato a chiedermelo.
So a cosa servono i servizi di applicazione.
- Orchestrare i casi d'uso.
- Recupero dei root aggregati tramite repository (repo astrazioni).
- Invio di email, gestione di sessioni di sorta ...
Tuttavia, ho visto spesso che gli autori non implementano affatto i servizi di applicazione, ma piuttosto scaricano queste responsabilità sul controller MVC e questo mi confonde.
La mia linea di pensiero va:
- I servizi per le applicazioni fanno parte di un contesto limitato? Non ne ha voglia, poiché il Contesto Limitato è composto da Aggregati. Non ho mai visto un servizio applicazioni dichiarato come parte di un aggregato.
- I servizi per le applicazioni fanno parte del livello più esterno di Onion? No, gli elementi relativi alle interfacce utente / API / infrastruttura vivono lì.
- Quindi dove si adatta un servizio applicativo? Se dovessimo spostare ciascun Contesto Limitato in uno spazio dei nomi / assembly / libreria autonomo, il Servizio Applicazione non sarebbe in grado di seguire.
Cosa mi manca? Forse un servizio applicativo può lavorare con modelli di dominio rigorosamente da un singolo Contesto Limitato (più il Kernel condiviso)? Ciò potrebbe consentire il raggruppamento del Servizio Applicazione con il rispettivo Contesto Limitato.