Ciao Andrea, grazie per la domanda :) Secondo me non esiste un unico approccio assolutamente corretto per sviluppare un'applicazione. Ogni sviluppatore ha un proprio background e delle proprie preferenze che vorrebbe continuare a mantenere anche quando le tecnologie cambiano. Se incontra una nuova tecnologia che non offre restitenze al suo modo di lavorare, sarà pià semplice per lui decidere di adottarla e continuerà ad essere soddisfatto e perciò produttivo.
Io credo che Microsoft, più che influenzare l'adozione di certi approcci, stia aprendo ASP.NET Core a molti modi di lavorare, in modo che professionisti diversi ritrovino la stessa piacevolezza di utilizzo.
"Preferisci tenere markup e codice fianco a fianco? Comprendiamo la tua preferenza e abbiamo una soluzione (Razor pages)".
"Sei uno sviluppatore frontend e vuoi provare un backend basato su ASP.NET Core? Sappiamo che è un'esigenza comune e quindi abbiamo qualcosa anche per te (template SPA)."
Uno sviluppatore può costruire un'applicazione di successo e che sia molto leggibile e manutenibile a prescindere che abbia scelto di usare Razor Pages, MVC, WebAPI o un mix di esse.
pagine razor ... a mio parere bisogna cercare di non abusarne
Uno sviluppatore disciplinato saprà farne il giusto uso. Anzi, secondo me, dato che è il concetto di "pagina" a guidare, è difficile che ti trovi con un codefile con parecchio codice dentro. Avrai giusto quei metodi che servono a rispondere alle azioni che l'utente può fare lato frontend. Viceversa, se non sei disciplinato, puoi scegliere di usare solo WebApi e costruire controller con decine di action dentro che afferiscono alla stessa entità. Anche a me è capitato che un controller mi scappasse di mano e diventasse gigantesco.
Il problema importante non è tanto identificare la migliore tecnologia possibile e forzarsi ad usarla ma avere un piano per mantenere il proprio progetto gestibile e facile da manutenere durante la sua crescita, a prescindere che si usi Razor Pages, MVC o Web API. Se hai scelto una tecnologia che ti piace usare, sarà più facile che succeda.
Cosa ne pensi riguardo allo sviluppo client?
Anche qui è questione di gusti. A me personalmente piace separare bene frontend e backend, quindi sono portato ad avere un frontend composto unicamente di file statici (html, css e typescript/javascript) ed avere una API basata su ASP.NET Core lato server. Questo non significa necessariamente realizzare Single page applications: puoi benissimo mantenere una navigazione tradizionale con link che puntano ad altri file html ed evitare di usare Angular se non ti va.
Oppure, se uno non mastica bene il javascript, può comunque riuscire nel realizzare una bella applicazione usando le Razor Pages.
Penso che tutte queste opzioni aprano molte strade diverse per arrivare con successo ad un obiettivo. Gli sviluppatori devono solo capire cosa gli va di usare.