Warum ich antworte:
Ich habe sehr viel Zeit gebraucht, um den Unterschied zwischen diesen beiden Technologien zu verstehen. Ich werde all diese Punkte hier einfügen, die ich denke: "Wenn ich diese Punkte zu der Zeit hatte, als ich mich auf der Suche nach dieser Antwort wunderte, habe ich mich sehr früher 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 Grundkonstrukte von HTTP (GET, POST, PUT, DELETE) nutzen und normalerweise kleinere Nachrichtenformate (wie JSON) verwenden. Daher sind REST-basierte HTTP-Dienste jetzt der Standard für Schreibdienste, die ausschließlich auf das Web ausgerichtet sind.
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 ersetzt, das auf SOAP / WSDL basierte.) Die Web-API erleichtert das Schreiben robuster Dienste auf der Grundlage von HTTP-Protokollen, die alle Browser und nativen Geräte verstehen. 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 meisten Anwendungen, die heute geschrieben wurden, um die allgegenwärtige Webverbindung zu nutzen, verwenden HTTP-Dienste in irgendeiner Weise.
Definieren wir nun den Zweck von WCF:
Die Kommunikation über das Internet ist nicht immer das effizienteste Mittel. Wenn beispielsweise sowohl der Client als auch der Dienst auf derselben Technologie (oder sogar auf demselben Computer) vorhanden sind, können sie häufig ein effizienteres Kommunikationsmittel (z. B. TCP / IP) aushandeln. Serviceentwickler trafen dieselben Entscheidungen, die sie vermeiden wollten. 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 Service ohne Rücksicht auf Grenzen erstellen. Sie können WCF dann die Möglichkeit geben, Ihren Dienst je nach anrufendem 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 (konfiguriert zur Entwurfszeit oder nach der Bereitstellung). Jeder Endpunkt gibt an, wie der Dienst einen anrufenden Client unterstützen kann: über das Web, über Remoting, über Microsoft Message Queuing (MSMQ) und mehr. Mit WCF können Sie sich auf die Erstellung Ihrer Servicefunktionen konzentrieren. Es macht sich Sorgen darüber, wie man am effizientesten mit anrufenden Kunden spricht. 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 zwischen den Anwendungen geteilt. Jede Anwendung kann auf einer anderen Plattform geschrieben sein und an einem anderen Speicherort vorhanden sein. Sie können die Kundenschnittstelle in einen WCF-Dienst extrahieren, der gemeinsamen Zugriff auf gemeinsam genutzte Kundendaten bietet. Dies zentralisiert die Daten, reduziert Doppelarbeit, eliminiert die Synchronisation und vereinfacht die Verwaltung. Darüber hinaus können Sie mithilfe von WCF die Service-Endpunkte so konfigurieren, dass sie für den aufrufenden Client sinnvoll sind. Abbildung zeigt das Beispiel von zuvor mit zentralem Zugriff auf Kundendaten in einem WCF-Dienst.
Fazit:
i) Wann Sie die Web-API auswählen sollten:
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, die Dienste erstellen, einen einfachen und unkomplizierten Ansatz. Webentwickler verstehen HTTP GET und POST und passen sich daher gut an diese Art von Diensten an. Wenn Sie Dienste schreiben , die ausschließlich auf HTTP ausgerichtet sind , ist die ASP.NET-Web-API daher die logische Wahl.
ii) Wann man WCF wählt:
Die WCF-Technologie ist nützlich, wenn Sie mehrere Service-Endpunkte basierend auf unterschiedlichen 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 Sie jedoch eine Anwendung schreiben müssen, die über TCP / IP kommuniziert, wenn eine Verbindung zum lokalen Netzwerk besteht Netzwerk und arbeitet über HTTP, wenn außerhalb des Netzwerks, WCF ist Ihre Antwort .
Sei gewarnt:
Webentwickler betrachten WCF häufig als schwieriger und komplexer zu entwickeln. Wenn Sie die Notwendigkeit von Multiprotokolldiensten nicht vorhersehen, bleiben Sie wahrscheinlich bei der ASP.NET-Web-API.