2013-03-16 6 views

risposta

12

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

1

squadra WCF fusa a Microsoft con il team MVC. WCF non sta andando via, ma per semplice chiamata di servizio RESTFUL, il controller MVC era una partita fatta in paradiso, e la modifica ad esso consentiva una API Web molto semplice.

Mentre molti di noi pensano che il WCF sia relativamente facile, ci sono molti che lo temono e/o non hanno/hanno bisogno di tempo per impararlo, quindi a. usare ancora ASMX, b. ancora mai adottato servizi, o ORA con Web API, sono c. Molto entusiasti di poter facilmente essere operativi con servizi Web riposanti.

Quindi è davvero una questione di livello di comfort, adattamento, capacità di modifica e l'API Web ha il suo posto. Non può sostituire WCF poiché WCF ha configurazioni avanzate con tutti i binding e la capacità di fare SOAP e non solo REST, che molte applicazioni hanno ancora bisogno di avere il protocollo SOAP.

+2

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

+1

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

+1

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

1

MVC è ottimizzato per servire le informazioni a un client di browser web. Se il tuo cliente è qualcos'altro, l'API Web ti renderà la vita più facile a lungo termine.

Web API è una riscrittura da zero dello stack Web. Al centro è molto più pulito e flessibile dell'infrastruttura di 12 anni su cui MVC è costruito. Le API Web non hanno ancora lo stesso livello di strumenti, componenti aggiuntivi, plug-in come MVC, ma ciò avverrà.

Problemi correlati