2012-05-24 1 views
9

Kann jeder den tatsächlichen Unterschied zwischen WCF-Dienst und ASP.NET Web API teilen? In diesem Szenario müssen wir WCF Service und ASP.NET Web API verwenden.WCF-Dienst im Vergleich zu ASP.NET Web Api

+2

möglich duplizieren: http://stackoverflow.com/questions/9348639/wcf-vs-asp-net-web-api –

Antwort

11

WCF Web API ist die nächste Generation von Microsoft Service Framework.

WCF-Dienste wurden ursprünglich mit einer Kanalarchitektur entworfen, die die Anpassung der für die Kommunikation zwischen Systemen verwendeten Protokolle und Transporte ermöglicht. Während dies dem Architekten/Entwickler eine große Flexibilität beim Aufbau interoperabler Anwendungen gibt, geht dies auf Kosten der Komplexität. Die Konfiguration von WCF war noch nie so einfach (IMO).

Der häufigste Anwendungsfall (IMO) verwendet WCF-Dienste, um Webanwendungen über AJAX-Anforderungen des Browsers für zusätzliche Daten zu unterstützen. Seit der Einführung von WCF ist es üblich, dass Anwendungen eine API mit http bereitstellen.

Da dies die neue WCF Web API ist ein Versuch, die Service-Infrastruktur zu vereinfachen und das HTTP-Transportprotokoll übernehmen.

Wenn Sie eine neue Webanwendung erstellen, würde ich die neue Web-API verwenden. Ich würde nur WCF-Dienste verwenden, wenn ich mit einem anderen System mit etwas anderem http kommunizieren müsste.


WCF Channel Architecture

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

WCF Web API

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

+1

Craig ist ziemlich genau den Nagel auf den Kopf hier getroffen. WebAPI = alles, was mit POX/JSON-Diensten zu tun hat. WCF macht alles andere einschließlich IPC/NetTCP/SOAP/RPC. – leon

0

Web Service

Es auf SOAP basiert und geben Daten in XML-Form. Es unterstützt nur HTTP-Protokoll. Es ist nicht Open Source, kann aber von jedem Client verwendet werden, der XML versteht. Es kann nur auf IIS gehostet werden.

WCF

Es auch auf SOAP und geben Daten in XML-Form basiert. Es ist die Evolution des Web-Service (ASMX) und unterstützt verschiedene Protokolle wie TCP, HTTP, HTTPS, Named Pipes, MSMQ. Das Hauptproblem mit WCF ist seine langwierige und umfangreiche Konfiguration. Es ist nicht Open Source, kann aber von jedem Client verwendet werden, der XML versteht. Es kann mit in der Anwendung oder auf IIS gehostet werden oder Fensterdienst verwenden.

WCF Rast

verwenden WCF als WCF REST-Service Sie webHttpBindings ermöglichen müssen. Es unterstützt HTTP GET und POST-Verben durch [WebGet] bzw. [WebInvoke] Attribute. Um andere HTTP-Verben zu aktivieren, müssen Sie in IIS eine Konfiguration vornehmen, um die Anforderung dieses Verbs zu akzeptieren.svc files Das Übergeben von Daten über Parameter mit einem WebGet muss konfiguriert werden. Das UriTemplate muss angegeben werden Es unterstützt XML, JSON und ATOM-Datenformat.

Web API

Dies ist der neue Rahmen für die Dienste mit einfacher und einfachen Art und Weise HTTP Aufbau. Die Web-API ist eine Open Source-Plattform, die eine ideale Plattform für die Erstellung von REST-ful-Diensten über das .NET Framework darstellt. Im Gegensatz zum WCF-Restdienst verwendet es die vollständigen Funktionen von HTTP (wie URIs, Request/Response-Header, Caching, Versionierung, verschiedene Inhaltsformate) Es unterstützt auch die MVC-Funktionen wie Routing, Controller, Aktionsergebnisse, Filter, Modellbinder , IOC Container- oder Dependency-Injection, Komponententests, die es einfacher und robuster machen. Es kann mit in der Anwendung oder auf IIS gehostet werden. Es ist eine leichte Architektur und gut für Geräte, die eine begrenzte Bandbreite wie Smartphones haben. Die Antworten werden vom MediaTypeFormatter der Web-API in JSON, XML oder einem anderen Format formatiert, das Sie als MediaTypeFormatter hinzufügen möchten.

Wem wählen zwischen WCF oder WEB-API

WCF wählen, wenn Sie einen Dienst erstellen möchten, die spezielle Szenarien wie eine Art und Weise Messaging, Message Queues, Duplex-Kommunikation usw. unterstützen sollte WCF Wählen Sie, wenn Sie Sie möchten einen Dienst erstellen, der - sofern verfügbar - schnelle Transportkanäle verwendet, z. B. TCP, Named Pipes oder sogar UDP (in WCF 4.5), und Sie möchten auch HTTP unterstützen, wenn keine anderen Transportkanäle verfügbar sind. Wählen Sie die Web-API, wenn Sie ressourcenorientierte Dienste über HTTP erstellen möchten, die die vollständigen Funktionen von HTTP verwenden können (wie URIs, Anforderungs-/Antwortheader, Caching, Versionierung, verschiedene Inhaltsformate). Wählen Sie die Web-API, wenn Sie Ihren Service einer Vielzahl von Clients zur Verfügung stellen möchten, einschließlich Browsern, Mobiltelefonen, iPhone und Tablets.