WCF vs ASP .Net Web API


93

Quali sono i pro e i contro dell'utilizzo di ciascuna tecnologia?

WCF Web Api è ora fusa in Asp.net Asp.net web api ora supporta l'hosting autonomo.

Immagino ancora che se volessi esporre più schemi di protocollo per la stessa operazione, mi orienterei ancora verso WCF o anche l'endpoint Mvc può farlo?

Inoltre, la nuova API Web Asp.Net espone Wsdl? In caso contrario, come capirebbe il cliente quale operazione è disponibile per lui?

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

Qualcuno può quindi dirmi quale vantaggio offre l'API Web di Asp.net? 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 ciò significa squat se finisce per essere un serio limite di progettazione lungo la strada.


15
Trovo il titolo di questa domanda un po 'fuorviante. Il titolo è "MVC 4 vs Wcf Web Api", ma la domanda sembra riguardare maggiormente WCF vs ASP .Net Web API. Dal titolo ho pensato che quello che veniva confrontato fosse il framework MVC 4 standard (controller, modelli, viste) vs framework ASP .Net Web API. Qualcun altro trova questo titolo fuorviante?
BruceHill,

Risposte:


72

Innanzitutto, ti suggerisco di leggere il mio post sull'argomento: http://blogs.microsoft.co.il/blogs/idof/archive/2012/03/05/wcf-or-asp-net-web-apis-my- due centesimi sul soggetto.aspx

Per quanto riguarda la tua domanda WSDL, poiché WebApi non utilizza SOAP, non richiede WSDL e non ne esporta. Puoi utilizzare Hypermedia per restituire risorse con un elenco di possibili URL di attività (pensalo come una risorsa auto-descrittiva)


6
È un ottimo scritto. Il migliore che abbia mai visto. Ma ora sono più confuso che mai. WebApi aggiunge così tanto, ma l'incapacità di esporre altri endpoint sembra molto restrittiva. Se avessi un client che può usare soap, ora sarà costretto a costruire l'azione e ad analizzare il risultato a mano quando soap avrebbe potuto generare l'intero contesto per loro. Li bloccherai anche dalla funzionalità Soap più avanzata come la sessione affidabile e la transazione Acid ... sigh.
Alwyn

2
@Alwyn - Penso che tutti i fatti che hai menzionato siano veri e quindi non dovrebbero confonderti ma piuttosto aiutarti 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, oppure hai un forte bisogno della funzionalità di generazione automatica del client o delle funzionalità avanzate del sapone: queste potrebbero essere le ragioni per cui preferire WCF all'API Web
BornToCode

@BornToCode: il codice client può essere generato automaticamente con WebAPI. È possibile produrre un file json spavaldo utilizzando il codice WebAPI. Quel file json può quindi essere utilizzato da un generatore di codice come swagger-codegen per produrre codice client in un gran numero di lingue di destinazione.
lasciato in bianco involontariamente il

@unintentionallyleftblank - IMHO È ancora più "user friendly" generare automaticamente il codice client tramite WCF rispetto all'API Web.
BornToCode

15

La scelta dipende da cosa vogliamo fare.

  1. L'API Web ASP.NET è un framework per la creazione di servizi non basati su SOAP solo su HTTP, quindi non sono disponibili più protocolli di trasporto utilizzando questo framework.
  2. WCF / Windows Communication Foundation è un framework per lo scambio di messaggi basati su SOAP: qui utilizziamo molti protocolli di trasporto: HTTP, TCP, Named pipe, MSMQ, ecc ...

Non sono sicuro di quale abbia prestazioni migliori per quanto riguarda la quantità di dati, forse WCF poiché possiamo utilizzare protocolli bassi. Eventuali commenti sono apprezzati.


2
Senza offesa, ma HTTP è solo un protocollo a livello di applicazione. Non ha alcuna restrizione intrinseca su quali protocolli del livello di trasporto possono essere utilizzati.
smwikipedia

8

L'API Web WCF si concentra principalmente sulle implementazioni REST. Se stai configurando un'implementazione REST, i bit WCF standard sono un po 'un problema nella parte posteriore. Se stai configurando servizi RESTful, troverai l'API Web WCF un'esperienza molto migliore. Se stai configurando servizi SOAP, l'API Web WCF non è la tua migliore amica e faresti meglio a usare WCF per i tuoi 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 su un altro servizio. Il più delle volte si ottiene semplicemente taggando le nuove operazioni con WebGet. D'altra parte, se hai mai un client che vuole usare Soap + Wsdl, è solo una modifica alla configurazione rispetto al codice + deploy + QA + il resto. Allora, come è migliore Mvc Web Api?
Alwyn

1
Se ti senti già a tuo agio con WCF, puoi continuare su questa strada. Ci sono, oltre a ciò che ho menzionato, alcuni miglioramenti interni su REST nell'API Web WCF (non ho l'elenco davanti a me), ma entrambi possono funzionare e non passerei settimane a refactoring se hai tonnellate di servizi di lavoro, esp. poiché c'è un piccolo cambiamento di paradigma nel pensiero. Tuttavia, per il lavoro futuro, prenderei in considerazione l'API Web WCF. Ma utilizzo l'API Web WCF da un po 'di tempo, quindi potrei essere di parte.
Gregory A Beamer

0

Usa WCF per siti intranet / B2B n API Web per B2C / C2C / siti internet ... SOAP / XML è ancora lo standard per la comunicazione intra-aziendale n non sparirà !!!

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.