2012-05-24 18 views
9

È possibile condividere la differenza effettiva tra il servizio WCF e ASP.NET Web Api? In quale scenario è necessario utilizzare il servizio WCF e ASP.NET Web Api.Servizio WCF vs ASP.NET Web Api

+2

possibile duplicato: http://stackoverflow.com/questions/9348639/wcf-vs-asp-net-web-api –

risposta

11

WCF Web API è la prossima generazione del framework di servizio di Microsoft.

I servizi WCF sono stati originariamente progettati con un'architettura di canale che consente la personalizzazione dei protocolli e dei trasporti utilizzati per comunicare tra i sistemi. Ciò offre all'architetto/sviluppatore una grande flessibilità nella creazione di applicazioni interoperabili, ma al costo della complessità. La configurazione di WCF non è mai stata semplice (IMO).

Il caso di utilizzo più comune (IMO), sta utilizzando i servizi WCF per fornire supporto alle applicazioni Web tramite richieste Ajax dal browser per ulteriori dati. Inoltre, dal momento in cui WCF è stato inizialmente introdotto, è diventato comune per le applicazioni fornire un'API utilizzando http.

Poiché, di questo, la nuova API Web WCF è un tentativo di semplificare l'infrastruttura del servizio e assumere il protocollo di trasporto http.

Se si sta creando una nuova applicazione Web, utilizzare la nuova API Web. Vorrei solo utilizzare i servizi WCF se avessi bisogno di comunicare con un altro sistema usando qualcosa di diverso da http.


WCF Channel Architecture

http://msdn.microsoft.com/en-us/library/ms729840.aspx

WCF API Web

http://www.asp.net/web-api

+1

Craig ha praticamente colpito l'unghia in testa qui. WebAPI = qualsiasi cosa abbia a che fare con i servizi POX/JSON. WCF fa tutto il resto incluso IPC/NetTCP/SOAP/RPC. – leon

0

Web Service

Si basa su SOAP e restituire i dati in formato XML. Supporta solo il protocollo HTTP. Non è open source ma può essere utilizzato da qualsiasi client che capisca xml. Può essere ospitato solo su IIS.

WCF

Si basa anche su SOAP e restituire i dati in formato XML. È l'evoluzione del servizio web (ASMX) e supporta vari protocolli come TCP, HTTP, HTTPS, Named Pipes, MSMQ. Il problema principale con WCF è la sua noiosa ed estesa configurazione. Non è open source ma può essere utilizzato da qualsiasi client che capisca xml. Può essere ospitato nell'applicazione o su IIS o utilizzando il servizio finestra.

WCF Resto

Per utilizzare WCF come servizio WCF Resto devi abilitare webHttpBindings. Supporta i verbi HTTP GET e POST rispettivamente con gli attributi [WebGet] e [WebInvoke]. Per abilitare altri verbi HTTP è necessario eseguire alcune configurazioni in IIS per accettare la richiesta di quel particolare verbo.file SVC Il passaggio dei dati tramite parametri mediante WebGet richiede la configurazione. UriTemplate deve essere specificato Supporta i formati di dati XML, JSON e ATOM.

Web API

Questo è il nuovo framework per la creazione di servizi HTTP con il modo facile e semplice. Web API è open source una piattaforma ideale per creare servizi REST-ful su .NET Framework. Diversamente dal servizio di ripristino WCF, utilizza le funzionalità complete di HTTP (come URI, intestazioni di richiesta/risposta, memorizzazione nella cache, controllo delle versioni, vari formati di contenuto) Supporta anche le funzioni MVC come routing, controller, risultati di azioni, filtro, raccoglitori di modelli , Iniezione del contenitore o dipendenza della IOC, test dell'unità che lo rende più semplice e robusto. Può essere ospitato nell'applicazione o su IIS. È un'architettura leggera e adatta ai dispositivi che hanno una larghezza di banda limitata come gli smartphone. Le risposte sono formattate da MediaTypeFormatter dell'API Web in JSON, XML o in qualsiasi formato che si desidera aggiungere come MediaTypeFormatter.

A chi scegliere tra WCF o WEB API

Scegliere WCF quando si vuole creare un servizio che dovrebbe supportare scenari speciali come un messaggistica modo, code di messaggi, la comunicazione duplex ecc Scegli WCF quando si desidera creare un servizio che possa utilizzare canali di trasporto veloci quando disponibili, come TCP, Named Pipes o forse anche UDP (in WCF 4.5) e si desidera anche supportare HTTP quando tutti gli altri canali di trasporto non sono disponibili. Scegli API Web quando desideri creare servizi orientati alle risorse su HTTP che possano utilizzare le funzionalità complete di HTTP (come URI, intestazioni di richiesta/risposta, memorizzazione nella cache, controllo delle versioni, vari formati di contenuto). Scegli API Web quando desideri esporre il tuo servizio a una vasta gamma di client, inclusi browser, cellulari, iphone e tablet.