Scopo
ASP.NET MVC è impegnata a rendere l'uscita del HTML facile. L'API Web ASP.NET si concentra sulla produzione di dati grezzi in modo semplice.
Nel mondo WebForms, ASP.NET MVC sarebbe equivalente alle pagine .aspx e l'API Web ASP.NET sarebbe .asmx.
Anche se nulla è impossibile
Mentre è possibile fare HTML uscita Web API e di uscita MVC dati grezzi, avrete bisogno di lavoro supplementare. Ad esempio, creare classi aggiuntive per gestire testo/html durante la negoziazione del contenuto nell'API Web o aggiungere la logica per gestire le query OData in MVC.
Ipotesi
L'assunzione di default sia per MVC e Web API sono diversi anche. MVC per impostazione predefinita presuppone che i dati inviati dall'utente possano provenire da più origini, sia nella stringa di query sia nel modulo.
L'API Web presuppone che il tipo primitivo provenga dalla stringa di query e che i tipi non primitivi provengano dal modulo. Presuppone inoltre che si desideri leggere il corpo del modulo solo una volta, senza memorizzazione nella cache, per ridurre l'utilizzo della memoria e migliorare le prestazioni.
Andare contro le impostazioni predefinite richiede un lavoro aggiuntivo, che per me non ha alcun senso.
EDIT:
Inoltre, ottenere richiesta AJAX è bloccato da JsonResult di MVC di default per prevenire CSRF, mentre Web API permette GET richiesta AJAX per impostazione predefinita.
Aggiornamento per MVC 6
MVC 6 unifica MVC e Web API e permette di tornare ViewResult come in MVC o l'oggetto come in API Web, e il quadro si prenderà cura di negoziazione dei contenuti, creando il codice HTML , JSON o XML per te. L'utilizzo di memoria inferiore arriva anche in MVC, utilizzando la pipeline personalizzata anziché quella fornita da System.Web.
Così andando avanti, non c'è distinzione tra MVC e Web API.
Se ho capito bene, stai dicendo che la differenza principale tra i due è che ASP MVC è progettato per l'output HTML e che l'API Web è progettata per generare tutto il resto. È questo l'unico fattore da prendere in considerazione? – Nathan
Per quanto ne so, si. Userò MVC per il mio sito web, mentre Web API fornirà i dati necessari alla mia app mobile. Entrambi possono risiedere nello stesso progetto. –
@JeowLiHuan È abbastanza facile rimuovere le impostazioni predefinite in-the-box da Web Api e utilizzare il proprio set di valori predefiniti. In questo modo può diventare la base per il tuo framework di API web. –