Architettura MVC originale
Nell'architettura MVC originale (Xerox PARC nel 1979), il controller gestisce l'interazione dell'utente. Interagisce con il modello e con una o più viste. La scissione della responsabilità richiede che il controllore non intervenga nel rendering che è di responsabilità della vista.
In questa architettura, non c'è bisogno di servizi: è perfettamente valido per un controller accedere direttamente agli oggetti del dominio.
Discendenti MVC
Questo è diverso da un'architettura MVP (inizialmente introdotta da Talligent nel 1996), in cui il presentatore (ovvero il controller) funge da intermediario tra la vista e il modello. L'idea è che in un'architettura client-server, il presentatore potrebbe essere diviso tra il server in cui viene mantenuto il modello di dominio e il client che si occupa della vista.
Ecco perché, in MVP, il controllore dovrebbe accedere al modello solo attraverso "comandi" e "selezioni". Quindi qui dovrebbe essere usato un livello di servizio.
Livello di servizio o no?
Questo articolo fa la differenza tra MVC, MVP e MVVM chiaro.
Sfortunatamente i framework hanno spesso una propria comprensione di MVC (ad es. Apple o team di Google Chrome ). Non è chiaro quale framework MVC stai usando: se necessario modifica la tua domanda per chiarire.
Tuttavia, indipendentemente da MVC, un dominio potrebbe essere utilizzato da diverse applicazioni tramite un'API (o implementato come microservizio). Quindi un livello di servizio potrebbe essere richiesto a causa di altre considerazioni di architettura e non a causa di MVC.