it-swarm.com.de

Was ist der Unterschied zwischen der WCF-Web-API und der ASP.NET-Web-API?

Ich habe in der Vergangenheit ein wenig mit WCF WebAPI gearbeitet und mochte eine Menge seiner Funktionen wirklich sehr. Ich spiele gerade mit ASP.NET Web API und es scheint völlig anders zu sein (IE wurde komplett von WCF entfernt).

Weiß jemand, welche Funktionen der WCF-WebAPI in der ASP.NET 4-Web-API enthalten sind?

40
Luke McGregor

Ich habe etwas mehr darüber gelesen und ein paar Seiten von MS-Leuten dazu gefunden:

http://wcf.codeplex.com/wikipage?title=How%20to%20Migrate%20von2020CF%20Web%20API%20to%20ASP.NET%20Web%20API

Die WCF-Web-API-Abstraktionen werden in etwa wie folgt der ASP.NET-Web-API zugeordnet

WCF-Web-API -> ASP.NET-Web-API

  • Dienst -> Web-API-Controller
  • Bedienung -> Aktion
  • Servicevertrag -> Nicht zutreffend
  • Endpunkt -> Nicht zutreffend
  • URI-Vorlagen -> ASP.NET-Routing
  • Message-Handler -> Gleich
  • Formatierer -> Gleiche
  • Bedienungshandler -> Filter, Modellbinder

und http://wcf.codeplex.com/discussions/319671

Der integrierte Stack unterstützt die folgenden Funktionen:

  • Modernes HTTP-Programmiermodell
  • Volle Unterstützung für ASP.NET-Routing
  • Verhandlung von Inhalten und benutzerdefinierte Formatierung
  • Modellbindung und Validierung
  • Filter
  • Abfrage Zusammensetzung
  • Einfacher Gerätetest
  • Verbesserte Inversion der Kontrolle (IoC) über DependencyResolver
  • Codebasierte Konfiguration
  • Selbsthost
22
Luke McGregor

Es sieht so aus, als ob WCF selbst irgendwie stirbt oder zumindest viel weniger wichtig wird, als es eigentlich sein sollte, und deshalb hat es auch viel weniger Entwicklungsaufwand in seinem Funktionsumfang. Neue Funktionen in WCF selbst sind eher kosmetisch. 

WCF wurde als transport-/protokollunabhängiger Weg für die Kommunikation zwischen Prozessen konzipiert. Selbst wenn die Idee eine unabhängige Abstraktion war, wurde sie meistens auf SOAP Stack aufgebaut. Als WCF 3.5 Unterstützung für REST brachte, wurde es meistens gehackt, weil REST alles von der Transportabhängigkeit abhängt. Die Verwendung einer transportunabhängigen API zur Unterstützung der Kommunikation zwischen Prozessen, die direkt durch die Verwendung von Transportfunktionen erfolgt, erwies sich als unpraktisch. Als Ergebnis veröffentlichte MS zunächst das WCF Rest API Starter Kit, das nie erreichte RTM =, aber es war eine Vorschau der Features, die später in WCF 4 und schließlich in .NET 4.5 oder WCF Web API enthalten war. Da REST transportabhängig ist und derzeit nur mit HTTP verwendet wird (selbst wenn theoretisch andere Transportprotokolle verwendet werden können), wurde die API in den .NET-Teil verschoben, der für die HTTP-Verarbeitung besser geeignet ist - für den derzeit sehr beliebten ASP .NET MVC. 

14
Ladislav Mrnka

Nach dem, was ich gelernt habe, hat Microsoft hier ein wenig Verwirrung gestiftet.

Ich gehe davon aus, dass Sie wissen, worum es in WCF geht, dieses große Framework, das auf XML aufbaut, damit Benutzer verteilte Dienste mit einer Vielzahl von Technologien (von SOAP bis REST) erstellen können. zu MSMQ usw.).

Es ist verdammt schwer zu benutzen (zumindest für mich) und erfordert eine Menge von bootstrap, damit es funktioniert. Schließlich erkannten sie dies und stellten einige Standardkonfigurationen für einfache http-Dienste (WCF REST Starter Kit jemand?). ASP.NET MVC gewann an Fahrt und einige der bereitgestellten Funktionen (z. B. automatische Argumente) wurden in WCF angezeigt.

Das ist die Situation:

Ankündigung: WCF Web API ist jetzt ASP.NET Web API! ASP.NET-Web-API mit ASP.NET MVC 4 Beta veröffentlicht. Die WCF-Web-API und die WCF-Unterstützung für jQuery-Inhalte auf dieser Site werden Ende 2012 entfernt.

http://wcf.codeplex.com/wikipage?title=Getting%20started:%20Building%20a%20simple%20web%20api

Und das ist besser, imho.

Ich bin mir ziemlich sicher, dass es möglich sein sollte, asp.net mvc4 webapi über WCF zu hosten (falls Sie das jemals brauchen), aber ich kann keine Dokumentation finden, die mich als richtig (oder falsch) beweisen kann.

UPDATE (kann nicht als Kommentar passen): Warten Sie, es gibt einen großen Unterschied zwischen "Verschieben einer Teilmenge der Kommunikationstechnologie von einer Bibliothek/einem Framework auf ein anderes" und "Ersetzen" WCF ". Ich persönlich denke, dass WCF für eine Art Kommunikationskonzept entworfen wurde und ein ziemlich cooles Design hat, aber das verteilte Rechnen bewegt sich etwas zu neuen (und einfacheren) Lösungen (siehe die funktionsreiche SOAP vs das schlanke und flexible REST (obwohl viele Leute REST immer noch auf RPC-Weise verwenden), und ich denke, dass diese Art von Programmiermustern besser in die MVC-Architektur passt als die WCF-Architektur. Es wurde versucht, eine einfache Methode zum Erstellen/Konsumieren von Webdiensten auf der Basis von WCF zu entwickeln, aber sie stellten schließlich fest, dass dies nicht die richtige Lösung war.

Ganz zu schweigen davon, dass viele Entwickler jetzt ASP.NET MVC verwenden und Webdienste für ihre Webanwendung ausruhen möchten. Das Durcheinander mit WCF ist für diese Art von Dingen oft übertrieben, und das habe ich auf meiner eigenen Haut erlebt.

Ich denke, dass der Routing-Mechanismus fantastisch und der richtige Weg ist, und wenn Sie genau hinschauen, haben sie einen Teil davon (mit verschiedenen Namen und Typen, aber das Muster war da) in WCF aufgenommen. Also ja, ich denke, wenn MS diesen Teil von WCF NICHT ENTLÄSST, SOLLTEN WIR es tun. Um genau zu antworten, nein, ich glaube nicht, dass Sie WebGet/WebInvoke jemals in asp.net mvc * finden werden, es passt einfach nicht hinein.

Ja, Self-Host ist wahrscheinlich das einzige Stück WCF, das derzeit in ASP.NET MVC4 enthalten ist.

14
WDRust

Die WCF-Web-API wird durch die ASP.NET-Web-API ersetzt, die Features der WCF-Web-API übernimmt und sie mit den Features von ASPNet MVC zusammenführt. ASP.NET Web API ist ein neues (02/2012) Framework zum Erstellen und Verwenden von HTTP-Diensten und eine Plattform zum Erstellen eines RESTful-Diensts. 

Obwohl dies nicht in der ursprünglichen Frage enthalten ist, scheint es erwähnenswert zu sein, dass WCF am Leben ist und sich gut entwickelt, und die Unterstützung von REST bleibt nützlich, wenn Sie bereits vorhandene SOAP (WS- *) - Dienste haben, die Sie unterstützen müssen, aber REST, um mehr Kunden zu erreichen.

Referenz

  1. CodePlex: WCF-Web-API ist jetzt ASP.NET-Web-API
  2. CodePlex: Daniel Roth über die Zukunft der WCF
  3. Chanel9: Dan Roth über die neue ASP.NET-Web-API
9
ScottWelker

Der folgende Auszug auf diese MSDN-Seite fasst dieses Dilemma gut zusammen.

Verwenden Sie WCF, um zuverlässige und sichere Webdienste zu erstellen, die über eine Vielzahl von Transporten zugänglich sind. Verwenden Sie die ASP.NET-Web-API zum Erstellen von HTTP-basierten Diensten, auf die von einer Vielzahl von Clients aus zugegriffen werden kann. Verwenden Sie die ASP.NET-Web-API, wenn Sie neue REST-Dienste erstellen und entwerfen. Obwohl WCF etwas für das Schreiben von REST-Services bereitstellt, ist die Unterstützung für REST in der ASP.NET-Web-API vollständiger und alle zukünftigen REST -Funktionsverbesserungen werden in ASP.NET-Web-API vorgenommen . Wenn Sie über einen vorhandenen WCF-Dienst verfügen und zusätzliche REST -Endpunkte verfügbar machen möchten, verwenden Sie WCF und die WebHttpBinding.

1

Hier ist ein guter Artikel zu Web Service, WCF und Web API http://goo.gl/T29A5B

Internetservice

  • Basierend auf SOAP und geben Sie XML-Daten zurück
  • Unterstützt nur das HTTP-Protokoll. Es unterstützt nur das HTTP-Protokoll. 
  • Wird von einem Client verwendet, der XML-Services SOAP verstehen kann.
  • Kann auf IIS hosten. Es kann nur auf IIS gehostet werden.
  • Einfach zu lernen und zu verstehen.

WCF

  • Basierend auf SOAP und geben Sie XML-Daten zurück. SOAP ist schwer zu vergleichen, dann JSON und seinen Overhead auch über das Netzwerk.
  • Die erweiterte Version der Webdienste unterstützt mehrere Protokolle wie TCP, HTTP, HTTPS, Named Pipes und MSMQ über die Konfiguration.
  • Zuverlässiger, wenn sowohl Client als auch Server über .Net verfügen. 
  • Die Implementierung und Konfiguration ist komplex 
  • Wird von einem Client verwendet, der XML-Services SOAP verstehen kann.
  • Selbsthosting, IIS und Verwendung von Windows-Diensten.

Web API (Web API 2.0)

  • Speziell für das Erstellen von HTTP Restful Services auf .Net Framework.
  • Web-API leicht lesbar und praktisch als JSON.
  • Unterstützt alle Funktionen von HTTP wie URLs, Request/Response, Header, Caching und Versioning.
  • Web API unterstützt viele HTTP-Verben wie GET, POST, PUT, DELETE usw.
  • Die Web-API ist zustandslos.
  • Web-API unterstützt MVC-Funktionen (Controller, Aktionsergebnisse, Routing, Filter, Modellbinder, IOC -Container oder Abhängigkeitsinjektion)
  • Die Web-API kann selbst gehostet und in der Anwendung und auf IIS gehostet werden.
  • OWIN (Open Web Interface for .NET) wird für das Selbsthosting verwendet.
1
Bhuvnesh

ASP.net-Web-API ist leichtgewichtig und REST unterstützt eingebaute. Es eignet sich eher für mobile Anwendungen. WCF ist mit mehr Optionen gefüllt. Es hängt von der Komplexität des Systems ab, eine davon auszuwählen.

0
Bumble