WebAPI è basato su MVC, ma presenta alcune sottili differenze. Devi capire che WebAPI è una cosa separata da MVC e non richiede MVC. È possibile installare separatamente WebAPI ed è possibile disinstallarlo dai modelli MVC predefiniti.
È vero, MS avrebbe potuto creare WebAPI direttamente nei controller MVC, ma hanno scelto di mantenere i controller API separati dai controller MVC perché sono in realtà diversi modi di gestire le richieste e le risposte.
Esempi di cose che si possono fare in WebAPI che non si può (o almeno non così facilmente) in MVC comprendono:
- Content Negotiation
- Questo permette al client chiamante per scegliere il formato che verranno restituiti i dati, come XML o JSON.
- supporto OData
- Questo consente al chiamante di "filtrare" i risultati sul server senza il metodo del servizio dover sostenere specificamente essa. Per esempio, se si desidera ordinare i risultati per nome, allora questo può essere fatto semplicemente specificando OData Parametri query
WebAPI fornisce un sacco di potenza per affrontare i dati risultano set. MVC non fornisce questo tipo di funzionalità.
Si tende a utilizzare WebAPI per richieste come Ajax o richieste basate su servizi Web che non richiedono la complessità di WCF.
Le API RESTful non sono specifiche per MVC o WebAPI. Sono semplicemente una filosofia per come si progettano le richieste HTTP in un servizio. C'è molto da fare davvero, ma non ci entrerò.
fonte
2013-03-16 08:14:42
Non sarei d'accordo sul fatto che la WCF sia "facile". Certo, è abbastanza facile creare un servizio semplice, ma la WCF ha troppi "trucchi" e ha una curva di apprendimento ripida oltre le basi. Per esempio, qualcosa come la semplice ignoranza di un certificato autofirmato richiede di saltare attraverso un sacco di cerchi. Anche i problemi di autenticazione creano molti problemi. Per un SOA in piena regola, WCF ha senso, in quanto fornisce un sacco di funzionalità per questo, ma per il semplice supporto AJAX è decisamente eccessivo. Per non parlare, non è così facile essere RESTful. –
Sono con @MystereMan su questo. WCF è molto potente, ma non considererei i binding facili o sempre intuitivi, soprattutto per scenari come le credenziali dell'utente con sicurezza del trasporto. C'è aria dolce nei contratti a volte/risultati fortemente tipizzati + contratti, ma molte volte è eccessivo, e il debug di solito è molto più difficile delle semplici chiamate riposanti. –
"relativamente facile" è la chiave non "facile", ma l'intero punto non è quello di concentrarsi sul mio discorso WCF, in quanto questo è semplicemente un punto di confronto, chiaramente dico che l'API Web ha il suo posto e "c. Molto eccitato (Persone) che può facilmente essere installato e funzionante con servizi Web riposanti "Così ho scelto le mie parole con cura poiché molti stanno ancora utilizzando ASMX, alcuni WCF non utilizzati perché avevano motivi per non adottarlo, e quindi la folla che è saltare su Web API per semplicità amor di riposo. –