2012-03-19 18 views
89

Quali sono i pro e i contro dell'utilizzo di ciascuna tecnologia?WCF vs API Web ASP .Net

WCF Web Api è ora unito in Asp.net Asp.net web api ora supporta l'auto hosting.

Immagino ancora se desidero esporre più schemi di protocollo per la stessa operazione, mi piacerebbe ancora orientarmi verso WCF o l'endpoint Mvc può fare anche questo?

Inoltre la nuova API web Asp.Net espone Wsdl? In caso contrario, in che modo il cliente dovrebbe capire quale operazione è disponibile per loro?

Probabilmente la migliore caratteristica di Mvc è il modelbinder. Quanto è robusto l'equivalente di WCF?

Quindi qualcuno può dirmi quale vantaggio offre l'API di Asp.net sul tavolo? WCF sembra in modo schiacciante la scelta più potente/scalabile, imo. L'unica cosa che Mvc Web Api ha sul modello WCF è probabilmente la facilità di sviluppo, ma questo significa squat se finisce per essere una seria limitazione del design lungo la strada.

+15

Trovo il titolo di questa domanda un po 'fuorviante. Il titolo è "MVC 4 vs Wcf Web Api", ma sembra che la domanda si concentri maggiormente su WCF vs ASP .Net Web API. Dal titolo ho pensato che ciò che veniva confrontato era il framework standard MVC 4 (Controllers, Models, Views) e ASP .Net Web API framework. Qualcun altro trova questo titolo fuorviante? – BruceHill

risposta

72

In primo luogo, vi consiglio di leggere il mio post su questo argomento: http://blogs.microsoft.co.il/blogs/idof/archive/2012/03/05/wcf-or-asp-net-web-apis-my-two-cents-on-the-subject.aspx

quanto riguarda la tua domanda WSDL - dal momento che il WebAPI non usare sapone, non richiede un WSDL, e non esporta uno. È possibile utilizzare Hypermedia per restituire le risorse con un elenco di possibili URL di attività (si consideri come una risorsa auto-descrittiva)

+6

Questa è una recensione molto buona. Il migliore che abbia mai visto. Ma ora sono più confuso che mai. WebApi aggiunge molto, ma l'impossibilità di esporre altri endpoint sembra molto restrittiva. Se si dispone di un client che può utilizzare il sapone, sarà ora costretto a creare l'azione e analizzare il risultato manualmente quando soap potrebbe aver generato l'intero contesto per loro. Potrai anche bloccarli dalla funzione Soap più avanzata come sessione affidabile e transazione Acid ... sigh. – Alwyn

+2

@Alwyn - Penso che tutti i fatti che hai menzionato siano veri e quindi non ti confondano ma ti aiutino a prendere una decisione - L'API Web ha i suoi vantaggi, ma se il tuo servizio deve essere esposto da più endpoint inclusi altri protocolli , o hai una forte necessità per la funzione di generazione automatica del client o per le funzionalità avanzate di soap - questi potrebbero essere il motivo per preferire WCF tramite l'API Web – BornToCode

8

L'API Web WCF si concentra principalmente sulle implementazioni REST. Se si imposta un'implementazione REST, i bit WCF standard sono un po 'fastidiosi nella parte posteriore. Se stai configurando servizi RESTful, troverai che l'API Web WCF è un'esperienza molto più piacevole. Se si impostano i servizi SOAP, l'API Web WCF non è il migliore amico e si preferisce utilizzare WCF per i propri servizi.

+2

Sì, le configurazioni sono un problema, ma è un costo di installazione una tantum. Dopo averlo fatto, puoi praticamente copiare e incollare il comportamento/endpoint in un altro servizio. Il più delle volte si ottiene semplicemente taggando le nuove operazioni con WebGet. D'altra parte se si ottiene un client che vuole usare Soap + Wsdl, è tutto solo un cambiamento di configurazione rispetto al codice + deploy + QA + il resto. Allora, qual è il Mvc Web Api meglio? – Alwyn

+1

Se si è già a proprio agio con WCF, è possibile continuare su tale percorso. Vi sono, oltre a ciò che ho menzionato, alcuni miglioramenti interni su REST nell'API Web WCF (non ho l'elenco di fronte a me), ma entrambi possono funzionare e non vorrei sprecare settimane nel refactoring se hai tonnellate di servizi di lavoro, esp. poiché c'è un po 'di paradigma nel pensare. Per il lavoro futuro, tuttavia, prenderei in considerazione l'API Web WCF. Ma sono stato con API Web WCF per un bel po 'di tempo, quindi potrei essere di parte. –

15

La scelta dipende da cosa vogliamo fare.

  1. ASP.NET Web API è un framework per la creazione di servizi non basati su SOAP solo su HTTP, quindi non ci sono più protocolli di trasporto disponibili con questo framework. Communication Foundation
  2. WCF/Windows è un quadro di riferimento per lo scambio di messaggi basati su SOAP - qui usiamo un sacco di protocolli di trasporto: HTTP, TCP, named pipe, MSMQ, ecc ...

non sono sicuro su quale si hanno prestazioni migliori per quanto riguarda la quantità di dati, forse WCF poiché possiamo usare protocolli bassi. Qualsiasi commento è apprezzato.

+2

Senza offesa, ma HTTP è solo un ** protocollo del livello applicazione **. Non ha alcuna limitazione intrinseca su quali protocolli ** transport-layer ** possono essere utilizzati. – smwikipedia

0

Utilizzare WCF per siti intranet/B2B n API Web per siti B2C/C2C/Internet ... SOAP/XML è ancora lo standard per le comunicazioni intra-imprese e non sta per andare via !!!