ASP.NET WebApi vs MVC? [chiuso]


140

Con i controller ASP.NET MVC puoi esporre i tuoi dati in diversi formati. AspNetWebAPI è progettato esplicitamente per la creazione di API ma posso facilmente farlo con i controller MVC, non mi è chiaro in quali casi sarebbe meglio dei controller MVC tradizionali. Sono interessato a scenari in cui i vantaggi di WebApi sono evidenti e sarebbe opportuno aggiungere un altro livello di complessità alle mie applicazioni.

Domanda: quali sono i vantaggi e / o gli svantaggi dell'utilizzo di asp.net WebApi rispetto a MVC?



11
È divertente per me quanto casuali queste domande "vs" vengano chiuse immediatamente o salgano a questo livello di voti positivi.
cbmeeks,

10
Grrr. Odio quegli striscioni "chiusi come troppo broccati". Tante volte trovo grandi domande come questa. E più spesso non hanno anche grandi risposte. E se fosse troppo ampio. Gli esperti sono qui e non su Wikipedia o su altri forum. Quindi lascia che facciano le loro cose e si facciano da parte.
Nharrer,

Risposte:


47

WebApi consente di creare servizi che possono essere esposti su HTTP anziché attraverso un servizio formale come WCF o SOAP. Un'altra differenza sta nel modo in cui WebApi utilizza il protocollo Http e lo rende davvero un cittadino Http di prima classe.

AGGIORNAMENTO: ASP.NET Core, API Web è stata integrata nel tipo di progetto MVC. La ApiControllerclasse è consolidata nella Controllerclasse. Altro su: https://wildermuth.com/2016/05/10/Writing-API-Controllers-in-ASP-NET-MVC-6

Un collegamento pertinente di confronto, discussioni ed esercitazioni:

inserisci qui la descrizione dell'immagine


20
Non sono d'accordo sul fatto che l'altro post sia simile. L'altro post riguarda in realtà WCF vs WebAPI.
Shane Courtrille,

Tecnicamente parlando, dice l'API Web WCF, tuttavia pubblica menzioni sulla seconda riga che ora è unito in API Web Asp.net e supporta il self hosting. Ho comunque aggiornato il link con uno più recente. Spero che possa aiutare.
Yusubov,

Aggiornato i riferimenti.
Yusubov,

23

WebAPI sputa OData, in modo da ottenere tutti i vantaggi dell'utilizzo di OData. Ad esempio, con WebAPI ottieni:

  • Opzioni di query come $ filter, $ top, $ orderby, ecc.
    • Con i controller MVC tradizionali è necessario implementarli da soli.
  • Standardizzazione del formato
    • Esistono client OData in grado di comprendere il formato sottostante dell'API RESTful.

5
Una specie di. POSSO supportare oData, ma solo se decori l'azione con l'attributo 'interrogabile', almeno a partire da RC.
EBarr,

14

Asp.Net Web API VS Asp.Net MVC 1inserisci qui la descrizione dell'immagine . Asp.Net MVC viene utilizzato per creare applicazioni Web che restituiscono sia viste che dati, ma l'API Web Asp.Net viene utilizzato per creare servizi HTTP completi con un modo semplice e semplice che restituisce solo i dati non visualizzati.

2 . L'API Web aiuta a creare servizi REST completi su .NET Framework e supporta anche la negoziazione dei contenuti (si tratta di decidere i dati del formato di risposta migliori che potrebbero essere accettabili dal client. Potrebbe essere JSON, XML, ATOM o altri dati formattati ), self hosting che non si trovano in MVC.

3 . L'API Web si occupa anche della restituzione dei dati in un formato particolare come JSON, XML o qualsiasi altro basato sull'intestazione Accept nella richiesta e non ti preoccupare di questo. MVC restituisce i dati solo in formato JSON utilizzando JsonResult.

4 . Nell'API Web la richiesta è mappata alle azioni in base ai verbi HTTP, ma in MVC è mappata al nome delle azioni.

5 . L'API Web Asp.Net è un nuovo framework e parte del framework ASP.NET di base. L'associazione del modello, i filtri, il routing e altre funzionalità MVC presenti nell'API Web sono diverse da MVC ed esistono nel nuovo assembly System.Web.Http. In MVC, queste imprese esistono con in System.Web.Mvc. Quindi l'API Web può essere utilizzata anche con Asp.Net e come livello di servizio autonomo.

6 . È possibile combinare API Web e controller MVC in un singolo progetto per gestire richieste AJAX avanzate che possono restituire dati in formato JSON, XML o qualsiasi altro e creare un servizio HTTP completo. In genere, questo verrà chiamato self hosting dell'API Web.

7 . Quando hai MVC misto e controller API Web e desideri implementare l'autorizzazione, devi creare due filtri uno per MVC e un altro per l'API Web poiché entrambi sono diversi.

8 . Inoltre, l'API Web è un'architettura leggera e, tranne l'applicazione Web, può essere utilizzata anche con le app per smartphone.

La fonte originale è qui


13

Analogie

1) entrambi eredita da ihhtphandler per la richiesta asincrona, quindi fondamentalmente apicontroller o controller mvc sono entrambi i wrapper del web.

Differenze: 1) Il controller mvc è molto pesante se puoi passare attraverso la sua definizione puoi vedere quante interfacce e il codice base ha usato, web api è un controller più leggero e distinguere la richiesta dai suoi parametri passati (sì, possiamo cambiarlo anche noi! )

2) Il controller MVC ha troppe funzionalità come restituisce visualizzazioni, risultato dell'azione, risultato javascript ecc. Ma in API Web ha JSON o XML

3) L'API è per l'implementazione di servizi Restful (get, post, put, delete, options) che possono essere ospitati in modo indipendente in qualsiasi luogo senza dipendere dalle viste, il controller MVC non può supportarlo poiché strettamente integrato con le viste.


1
Vale la pena notare che è ancora possibile ottenere un comportamento simile all'API con MVC utilizzando i risultati dell'azione mvc come JSONResult, ecc. Tuttavia, come è stato sottolineato, il controller MVC è più pesante. Anche il modo in cui vengono implementati i controller API Web è più favorevole alla creazione di un'API rispetto a MVC.
Grizzly Peak Software

12

Questa immagine sembra mostrare le differenze e le somiglianze nel modo in cui la questione. Spero che mi aiuti a interessarmi.

inserisci qui la descrizione dell'immagine


10

Ad un certo punto potresti voler dimenticare ASP.NET MVC tutti insieme. Se sei uno sviluppatore .NET ma vuoi creare un'applicazione a pagina singola (usando Angular per esempio), vorrai i vantaggi di un servizio RESTful (WebAPI) senza tutto il gonfiore inutile fornito con ASP.NET MVC.


5

ASP.NET MVC e ASP.NET Web api utilizzano entrambi per scopi diversi

ASP.NET

ASP.NET offre tre framework per la creazione di applicazioni Web: moduli Web, ASP.NET MVC e pagine Web ASP.NET. Tutti e tre i framework sono stabili e maturi e puoi creare fantastiche applicazioni web con ognuna di esse. Indipendentemente dal framework che scegli, otterrai tutti i vantaggi e le funzionalità di ASP.NET ovunque.

Ogni framework ha come obiettivo uno stile di sviluppo diverso. Quello che scegli dipende da una combinazione delle tue risorse di programmazione (conoscenza, abilità ed esperienza di sviluppo), il tipo di applicazione che stai creando e l'approccio di sviluppo che ti senti a tuo agio. Tutti e tre i framework saranno supportati, aggiornati e migliorati nelle versioni future di ASP.NET.

MVC

ASP.NET MVC offre un modo potente e basato su schemi per creare siti Web dinamici che consente una netta separazione delle preoccupazioni e offre il pieno controllo sul markup per uno sviluppo piacevole e agile. ASP.NET MVC include molte funzionalità che consentono uno sviluppo rapido e compatibile con TDD per la creazione di applicazioni sofisticate che utilizzano gli standard Web più recenti.

API Web

L'API Web ASP.NET è un framework che semplifica la creazione di servizi HTTP che raggiungono un'ampia gamma di client, inclusi browser e dispositivi mobili. L'API Web ASP.NET è una piattaforma ideale per la creazione di applicazioni RESTful su .NET Framework.

puoi leggere altro modulo qui http://www.dotnet-tricks.com/Tutorial/webapi/Y95G050413-Difference-b Between- ASP.NET- MVC- and- ASP.NET- Web-API.html


3

ASP.NET MVC si concentra sulla semplificazione dell'output di HTML. L'API Web ASP.NET si concentra sulla semplificazione dell'output di dati non elaborati.

Nel mondo WebForms, ASP.NET MVC sarebbe equivalente alle pagine .aspx e l'API Web ASP.NET sarebbe .asmx


2

Asp.Net MVC viene utilizzato per creare applicazioni Web che restituiscono sia viste che dati, ma l'API Web Asp.Net viene utilizzata per creare servizi HTTP completi con un modo semplice e semplice che restituisce solo i dati non visualizzati.

L'API Web aiuta a creare servizi REST su .NET Framework e supporta anche la negoziazione dei contenuti (si tratta di decidere i migliori dati di formato di risposta che potrebbero essere accettabili dal client. Potrebbe essere JSON, XML, self hosting che non sono in MVC.

L'API Web si occupa anche della restituzione dei dati in un formato particolare come JSON, XML o qualsiasi altro basato sull'intestazione Accept nella richiesta e non ti preoccupare di questo. MVC restituisce i dati solo in formato JSON utilizzando JsonResult.


1

Di solito, WebAPI viene utilizzato per i servizi dati in cui MVC può generare più tipi di output.

WebAPI semplifica sicuramente il modo in cui possiamo creare servizi di dati. È pulito e facile per questo scopo. MVC viene fornito con alcuni altri strumenti in giro.

MVC può generare qualsiasi output che WebAPI può generare. La generazione di output da modelli può essere facilmente raggiunta in MVC. Non riesco a trovare un motivo per farlo in WebAPI. Gli sviluppatori PHP e il vecchio programmatore ASP potrebbero conoscere questo atteggiamento del passato, dove è possibile creare file HTML coinvolti con il codice C # all'interno.

WebAPI- DATA MVC - DATA, UI / HTML, XHTML, File, Modelli ecc.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.