6

Il titolo riassume davvero la mia domanda. Ho usato entrambe le tecnologie, ma sono incerto su ciò che si offre che è sostanzialmente diverso rispetto agli altri. In sostanza:Quali sono le principali differenze tra API Web e ASP MVC

Quali criteri e/o indicazioni si dovrebbero prendere in considerazione quando si seleziona ASP MVC o Web API quando si progetta un'applicazione Web riposante?

risposta

16

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.

+1

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

+2

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. –

+0

@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. –

Problemi correlati