wake-up-neo.com

WCF vs ASP.NET Web API

Ich habe einige Monate damit verbracht, die Konzepte hinter WCF zu verstehen, und vor kurzem habe ich meine erste WCF-Dienstanwendung entwickelt.

Ich habe mich sehr bemüht, alle Einstellungen in der Konfigurationsdatei zu verstehen.
Ich bin nicht von der Umwelt überzeugt, aber es scheint, dass man damit erstaunliche Dinge anstellen kann.

Neulich habe ich herausgefunden, dass Microsoft ein neues Produkt namens ASP.NET Web API herausgebracht hat.

Für das, was ich lesen kann, ist es ein RESTful Framework, sehr einfach zu bedienen und zu implementieren.

Jetzt versuche ich herauszufinden, was die Hauptunterschiede zwischen den beiden Frameworks sind und ob ich versuchen sollte, meine alte WCF-Dienstanwendung mit der neuen zu konvertieren API.

Könnte mir bitte jemand helfen, die Unterschiede und die Verwendung der beiden zu verstehen?

469
LeftyX

Das neue ASP.NET Web API ist eine Fortsetzung des vorherigen WCF Web API Projekts (obwohl sich einige der Konzepte geändert haben ).

WCF wurde ursprünglich erstellt, um SOAP-basierte Dienste zu aktivieren. Für einfachere RESTful- oder RPCish-Dienste (denken Sie an Clients wie jQuery) sollte die ASP.NET-Web-API eine gute Wahl sein.

178
marcind

Für uns wird WCF für SOAP und die Web-API für REST verwendet. Ich wünsche mir, dass die Web-API auch SOAP unterstützt. Wir verwenden keine erweiterten Funktionen von WCF. Hier ist ein Vergleich von MSDN :

enter image description here

242
Manish Jain

Die ASP.net-Web-API basiert auf HTTP und REST GET, POST, PUT, DELETE. Die Web-API ist für den gesamten Lightweight-Prozess und reine HTTP-basierte Komponenten vorgesehen. Wenn Sie WCF auch für einfache oder einfachste einzelne Webservices einsetzen, wird das gesamte zusätzliche Gepäck mitgebracht. Für einen leichten, einfachen Service für Ajax- oder dynamische Anrufe löst WebApi immer nur den Bedarf. Dies ergänzt oder unterstützt die ASP.net-MVC auf übersichtliche Weise.

Lesen Sie den Podcast: Hanselminutes Podcast 264 - Dies ist nicht die WCF Ihres Vaters - Alles über die WebAPI mit Glenn Block von Scott Hanselman, um weitere Informationen zu erhalten.

80
Naveen Vijay

In den unten aufgeführten Szenarien sollten Sie sich für WCF entscheiden:

  1. Wenn Sie Daten über Protokolle wie TCP, MSMQ oder MIME senden müssen
  2. Wenn der konsumierende Client nur weiß, wie er SOAP Nachrichten konsumiert

Die WEB-API ist ein Framework für die Entwicklung von RESTful/HTTP-Diensten.

Es gibt so viele Clients, die SOAP nicht verstehen, wie Browser, HTML5. In diesen Fällen sind WEB-APIs eine gute Wahl.

Der HTTP-Dienst-Header gibt an, wie der Dienst gesichert werden soll, wie die Informationen zwischengespeichert werden sollen, der Typ des Nachrichtentexts und der HTTP-Text können alle Arten von Inhalten wie HTML und nicht nur XML als SOAP -Dienste angeben.

66
Kris

Seitdem ich beide bis jetzt benutzt habe, habe ich viele Unterschiede zwischen WCF und Web API festgestellt. Beide Technologien eignen sich gut für unterschiedliche Szenarien. Es ist also nicht möglich zu sagen, was besser ist, dies hängt von der Konfiguration und dem Szenario ab.

See this image to understand more differnce

Hinweis: Die Daten stammen nicht nur aus meiner Sicht, sondern auch aus anderen offiziellen Websites.

37
Rajput

WCF bietet Ihnen so viel, dass es mit nichts vergleichbar ist. Es sei denn, Sie möchten Authentifizierung, Autorisierung, Verschlüsselung, Warteschlange, Drosselung, zuverlässiges Messaging, Protokollierung, Sitzungen usw. selbst implementieren (um nur einige zu nennen). WCF ist nicht nur ein Webdienst. WCF ist eine Entwicklungsplattform für SOA.

34
tridy

Es gibt einen Vergleich zu MSDN

WCF- und ASP.NET-Web-API

Für mich ging es darum, wer die Kunden sind und wo sie sich befinden.

Innerhalb des Unternehmensnetzwerks und bei .NET-basierten Clients: Verwenden Sie WCF mit TCP-Bindung (Schnelle Kommunikation als HTTP)

Verwenden Sie außerhalb des Unternehmensnetzwerks verschiedene Technologien wie PHP, Python usw. : Verwenden Sie die Web-API mit REST

12
Arshad Mohammad

Warum antworte ich:

Ich habe sehr viel Zeit gebraucht, um den Unterschied zwischen diesen beiden Technologien zu verstehen. Ich werde all diese Punkte hier anbringen, die ich denke: "Wenn ich diese Punkte zu der Zeit hatte, als ich mich nach dieser Antwort umgesehen habe, dann habe ich mich sehr früh für die Auswahl meiner erforderlichen Technologie entschieden."

Informationsquelle:

Microsoft® Visual Studio® 2015 entfesselt

ISBN-13: 978-0-672-33736-9 ISBN-10: 0-672-33736-3

Warum ASP.NET Web API und WCF:

Vor dem Vergleich der Technologien von ASP.NET Web API und WCF ist es wichtig zu verstehen, dass es tatsächlich zwei Stile/Standards zum Erstellen von Webdiensten gibt: REST (Representational State Transfer) und SOAP/WSDL. Die SOAP/WSDL war der ursprüngliche Standard, auf dem Webdienste aufgebaut waren. Es war jedoch schwierig zu verwenden und hatte umfangreiche Nachrichtenformate (wie XML), die die Leistung beeinträchtigten. REST-basierte Services wurden schnell zur Alternative. Sie sind einfacher zu schreiben, da sie die grundlegenden Konstrukte von HTTP (GET, POST, PUT, DELETE) nutzen und normalerweise kleinere Nachrichtenformate (wie JSON) verwenden. Daher sind REST-basierte HTTP-Dienste heute der Standard für das Schreiben von Diensten, die ausschließlich auf das Web abzielen.

Definieren wir den Zweck der ASP.NET-Web-API

Die ASP.NET-Web-API ist die Technologie von Microsoft zur Entwicklung von REST-basierten HTTP-Webdiensten. (Es hat vor langer Zeit Microsofts ASMX abgelöst, das auf SOAP/WSDL basierte.) Die Web-API erleichtert das Schreiben robuster Dienste auf der Grundlage von HTTP-Protokollen, die von allen Browsern und nativen Geräten verstanden werden. Auf diese Weise können Sie Dienste zur Unterstützung Ihrer Anwendung erstellen und diese von anderen Webanwendungen, Tablets, Mobiltelefonen, PCs und Spielekonsolen aus aufrufen. Die Mehrheit der heute geschriebenen Anwendungen, um die allgegenwärtige Webverbindung zu nutzen, verwendet auf irgendeine Weise HTTP-Dienste.

Definieren wir nun den Zweck von WCF:

Die Kommunikation über das Internet ist nicht immer das effizienteste Mittel. Wenn sich beispielsweise sowohl der Client als auch der Dienst auf derselben Technologie (oder sogar auf demselben Computer) befinden, können sie häufig ein effizienteres Kommunikationsmittel aushandeln (z. B. TCP/IP). Service-Entwickler haben die gleichen Entscheidungen getroffen, die sie zu vermeiden versuchten. Sie müssten sich nun zwischen der Schaffung effizienter interner Dienste und dem breiten Zugang über das Internet entscheiden. Und wenn sie beide unterstützen müssten, müssten sie möglicherweise mehrere Versionen ihres Dienstes oder zumindest separate Proxys für den Zugriff auf ihren Dienst erstellen. Dies ist das Problem, das Microsoft mit WCF gelöst hat .

Mit WCF können Sie Ihren Dienst ohne Berücksichtigung von Grenzen erstellen. Sie können WCF dann überlassen, Ihren Dienst je nach aufrufendem Client auf die effizienteste Weise auszuführen. Um diese Aufgabe zu verwalten, verwendet WCF das Konzept der Endpunkte. Ihr Dienst verfügt möglicherweise über mehrere Endpunkte (die zur Entwurfszeit oder nach der Bereitstellung konfiguriert werden). Jeder Endpunkt gibt an, wie der Dienst einen aufrufenden Client unterstützen kann: über das Web, per Remoting, über Microsoft Message Queuing (MSMQ) und mehr. Mit WCF können Sie sich auf die Erstellung Ihrer Dienstfunktionalität konzentrieren. Es geht darum, wie Sie am effizientesten mit anrufenden Kunden sprechen können. Auf diese Weise kann ein einzelner WCF-Dienst viele verschiedene Clienttypen effizient unterstützen.

Beispiel für WCF:

Betrachten Sie das Beispiel:

Die Kundendaten werden von den Anwendungen gemeinsam genutzt. Jede Anwendung ist möglicherweise auf einer anderen Plattform geschrieben und an einem anderen Speicherort vorhanden. Sie können die Kundenschnittstelle in einen WCF-Dienst extrahieren, der den gemeinsamen Zugriff auf gemeinsam genutzte Kundendaten ermöglicht. Dies zentralisiert die Daten, reduziert die Duplizierung, eliminiert die Synchronisierung und vereinfacht die Verwaltung. Darüber hinaus können Sie mithilfe von WCF die Dienstendpunkte so konfigurieren, dass sie für den aufrufenden Client sinnvoll sind. Abbildung zeigt das vorherige Beispiel mit zentralem Zugriff auf Kundendaten in einem WCF-Dienst.

This is how WCF serves different clients

Fazit:

i) Wann ist die Web-API auszuwählen?

Es ist nicht zu leugnen, dass REST-basierte HTTP-Dienste, wie sie mit der ASP.NET-Web-API erstellt wurden, zum Standard für die Erstellung von Webdiensten geworden sind. Diese Dienste bieten Webentwicklern einen einfachen und unkomplizierten Ansatz für die Erstellung von Diensten. Webentwickler verstehen HTTP GET und POST und passen sich daher gut an diese Arten von Diensten an. Wenn Sie also Dienste schreiben , die streng auf HTTP ausgerichtet sind, Die ASP.NET-Web-API ist die logische Wahl.

ii) Wann ist WCF zu wählen?

Die WCF-Technologie ist nützlich, wenn Sie mehrere Service-Endpunkte basierend auf verschiedenen Protokollen und Nachrichtenformaten unterstützen müssen. Produkte wie Microsoft BizTalk nutzen WCF, um robuste Dienste zu erstellen, die auch über das Web über verschiedene Computer-zu-Computer-Konfigurationen verwendet werden können. Wenn jedoch , müssen Sie eine Anwendung schreiben, die kommuniziert über TCP/IP, wenn eine Verbindung zum lokalen Netzwerk besteht, und über HTTP, wenn eine Verbindung außerhalb des Netzwerks besteht, ist WCF Ihre Antwort .

Sei gewarnt:

Webentwickler betrachten WCF häufig als schwieriger und komplexer zu entwickeln. Wenn Sie die Notwendigkeit von Multiprotokolldiensten nicht voraussehen, bleiben Sie daher wahrscheinlich bei der ASP.NET-Web-API.

12
Wiqi

Geschäftlich gesehen fehlt WebApi eine WSDL, daher sollten die Entwickler alles manuell dokumentieren. Wenn beispielsweise die WebApi-Operation eine Liste von Objekten zurückgibt, sollte der Client die Objekte manuell erstellen, d. H. WebAPI ist wirklich anfällig für Definitionsfehler.

Das Pro von Webapi ist leichter als WCF.

9
magallanes

In Bezug auf die Anweisung "WebApi hat keine WSDL" gibt es verschiedene Möglichkeiten, einen Rest-Client zu generieren. Ein beliebter Ansatz ist Swagger UI/(Swashbukkle Nuget). Auf diese Weise erhalten Sie eine umfangreiche Benutzeroberfläche zum Verständnis des Eingabe- und Ausgabeschemas des REST -Endpunkts sowie ein Online-Tool zum Testen der Endpunkte.

JSON LD (Json Linked Documents) ist ein weiterer aufkommender Standard, der die Erfahrung von JSON-basierten REST Entwicklern weiter verbessern wird, indem das JSON-Schema mit einer besseren Semantik verfügbar gemacht wird.

7

Mit wcf können wir dieselbe Serviceunterstützung für mehrere Endpunkte wie tcp, http.wenn Ihr Service nur http-basiert sein soll, ist es besser, mit der Web-API zu arbeiten. Die Web-API hat im Vergleich zu wcf eine sehr geringe Konfiguration und ist etwas schneller als wcf. Wcf unterstützt auch erholsame Dienste. Wenn Sie eine Einschränkung von .Net Framework 3.5 haben, ist Ihre Option wcf.

1