Differenza tra il progetto MVC 5 e il progetto Web Api

Sono nuovo di ASP.NET MVC e Web API e sto cercando di ottenere le basi. AFAIK, abbiamo modelli di progetto in VS 2013, nominati come MVC , Web API e Both of them together .

Ho seguito le esercitazioni e ho imparato che possiamo creare un’API utilizzando MVC da solo e con il modello di API Web.

Quindi, quali sono le differenze tra questi, basate su architettura e utilizzo ?

In sostanza, un controller Web API è un controller MVC , che utilizza HttpMessageResponse come tipo base della sua risposta, invece di ActionResponse . Sono gli stessi nella maggior parte degli altri aspetti. La principale differenza tra i tipi di progetto è che il tipo di progetto MVC Application aggiunge elementi specifici del web come CSS predefinito, file JavaScript e altre risorse necessari per un sito Web, che non sono necessari per un’API.

MVC viene utilizzato per la creazione di siti Web. In questo caso, i Controllers genere restituiscono una View (ad esempio la risposta HTML) alle richieste del browser. Le API Web, d’altro canto, sono solitamente realizzate per essere utilizzate da altre applicazioni. Se si desidera consentire ad altre applicazioni di accedere ai propri dati / funzionalità, è ansible creare un’API Web per facilitare questo accesso. Ad esempio, Facebook ha un’API per consentire agli sviluppatori di app di accedere alle informazioni sugli utenti che utilizzano l’app. Le API Web non devono essere destinate al consumo pubblico. Puoi anche creare un’API per supportare le tue applicazioni. Ad esempio, abbiamo creato un’API Web per supportare la funzionalità AJAX del nostro sito Web MVC.

Microsoft ha cambiato il modo in cui presentano i diversi modelli. Ora invece di utilizzare modelli diversi per diversi tipi di progetti, incoraggiano gli sviluppatori a mescolare le tecnologie ASP.NET all’interno dello stesso progetto, se necessario. Microsoft chiama questo vNext .

AGGIORNAMENTO: per ASP.NET Core, l’API Web è stata integrata nel tipo di progetto MVC 6 e la class ApiController è consolidata nella class Controller . Ulteriori dettagli su: https://wildermuth.com/2016/05/10/Writing-API-Controllers-in-ASP-NET-MVC-6

I miei due centesimi…

  1. In ASP.Net MVC , il Controller di MVC decide quale deve essere la View , ovvero il controllore decide che cosa “vedere” (in base allo scenario o contesto corrente) quando effettua una richiesta.
  2. In Web Form ASP.Net , le pagine ASPX decidono cosa l’utente dovrebbe “vedere” quando fanno una richiesta.
  3. Ma nelle API Web , non esiste alcun controllo / alimentazione a nessuna delle funzionalità dell’API Web per decidere cosa l’utente deve “vedere” quando effettua una richiesta.

L’API Web NON è una tecnologia legata solo ai siti Web. Può essere utilizzato per più scopi, non solo per i siti Web. Quindi non conosce il significato del rendering

Ulteriori letture

  1. Pianificazione di soluzioni Web oggi: moduli Web, ASP.NET MVC, API Web e OWIN.
  2. API Web WCF o ASP.NET? I miei due centesimi sull’argomento
  3. La prossima generazione di .NET – ASP.NET vNext
  4. Introduzione a ASP.NET MVC 6

Controller MVC derivato dalla class controller. In Mvc puoi restituire visualizzazioni. L’architettura del mvc utilizza per creare un’applicazione. Tuttavia, le API Web vengono utilizzate per fornire dati a varie applicazioni.

Web Api guida dal controller Api e non restituisce la vista.

Nota: è anche ansible creare Web Api dal controller MVC, ma è necessario restituire i risultati come JsonResult o altri tipi di ritorno supportati da Web API.

Oltre alle risposte già fornite qui, vale la pena notare che qualsiasi controller che eredita da ApiController e che ha un’azione con POST verbo Http può avere solo un parametro di input [FromBody]. Se si utilizza un controller MVC (derivato da ‘Controller’) è ansible avere molti parametri di inserimento post.