AngularJS è più associato al paradigma dell'applicazione a pagina singola e, come tale, non beneficia molto delle tecnologie lato server che rendono il markup. Non c'è motivo tecnico che ti impedisca di usarli insieme, ma in senso pratico, perché dovresti?
Una SPA recupera le risorse di cui ha bisogno (viste JS, CSS e HTML) e funziona da sola, comunicando ai servizi per inviare o recuperare dati. Quindi, una tecnologia lato server è ancora necessaria per fornire quei servizi (così come altri mezzi come l'autenticazione e simili), ma le parti di rendering sono in gran parte irrilevanti e non particolarmente utili perché è una duplicazione degli sforzi, tranne che MVC lo fa lato server e Angular lo fa sul client. Se stai usando Angular, lo vuoi sul client per ottenere i migliori risultati. Puoi creare moduli HTML post Angular e recuperare visualizzazioni parziali dalle azioni MVC, ma ti perderesti le funzionalità migliori e più semplici di Angular e ti renderai la vita più difficile.
MVC è piuttosto flessibile e potresti usarlo per le chiamate di servizio da un'applicazione SPA. Tuttavia, WebAPI è ottimizzato e un po 'più facile da usare per tali servizi.
Ho scritto un certo numero di applicazioni AngularJS, tra cui un paio migrate da WebForm e applicazioni MVC preesistenti, e l'aspetto ASP.NET si evolve verso una piattaforma per fornire l'app AngularJS come client effettivo e per ospitare il livello dell'applicazione il client comunica tramite REST (utilizzando WebAPI). MVC è un ottimo framework, ma di solito si trova senza un lavoro in questo tipo di applicazioni.
L'applicazione ASP.NET diventa un altro livello dell'infrastruttura, dove le sue responsabilità sono limitate a:
- Ospita il contenitore delle dipendenze.
- Collega le implementazioni della logica di business al container.
- Imposta pacchetti di risorse per JS e CSS.
- Ospita i servizi WebAPI.
- Rafforzare la sicurezza, eseguire la registrazione e la diagnostica.
- Interfacciamento con cache dell'applicazione per le prestazioni.
Un'altra cosa grandiosa di una SPA è che può aumentare la larghezza di banda del tuo team. Un gruppo può eliminare i servizi mentre l'altro giace nell'app client. Dal momento che puoi facilmente bloccare o simulare i servizi REST, potresti avere un'app client completamente funzionante sui servizi fittizi e sostituirla con quelli reali quando hanno finito.
Devi investire in anticipo su Angular, ma ripaga alla grande. Dato che hai già familiarità con MVC, hai un vantaggio su alcuni dei concetti fondamentali.