Ho un'applicazione web che implementa il pattern MVC in cui ho le classi controller i cui metodi mappano ciascuna su una richiesta HTTP.
Ho anche un livello di servizio con un gruppo di classi di servizio, con ogni classe di servizio che in genere contiene operazioni specifiche per una particolare entità di dominio.
Per logica semplice (come CRUD), un metodo di controller solitamente utilizza al massimo una classe di servizio e di solito solo un metodo su quella classe di servizio.
La mia domanda è come gestire la logica che coinvolge due (o più) entità.
Le opzioni che vedo sono:
- Consenti a una delle classi di servizio esistenti di gestire l'intera logica.
- Crea una nuova classe di servizio dedicata alla gestione della logica come questa.
- Utilizzano ancora le classi di servizio esistenti ma inseriscono la logica di orchestrazione nel controller. Il controller delega ancora la "carne" della logica per separare i servizi, ma si prenderà cura di cose come il sequenziamento e decidere in quale punto (s) per commettere modifiche.
Attualmente preferisco l'opzione 3 ma vorrei sapere se esiste un modo migliore. Sentiti libero di aggiungere qualsiasi opzione che non ho ancora elencato.