webentwicklung-frage-antwort-db.com.de

Was sind die Unterschiede zwischen WCF- und ASMX-Webdiensten?

Ich bin völlig verwirrt zwischen WCF und ASMX-Webdiensten. Ich habe in meinem früheren Stadium viele Webdienste verwendet, und jetzt gibt es dieses neue Ding mit dem Namen WCF. Ich kann immer noch WCF erstellen, die als Webdienst fungiert. Ich denke, es wird mehr Zeug in der WCF geben.

Was sind die Unterschiede zwischen WCF und Webdiensten? Wann sollte jeder verwendet werden?

371
shailesh

Keith Elder vergleicht ASMX mit WCF hier. Hör zu.

Ein weiterer Vergleich von ASMX und WCF ist hier zu finden - Ich stimme nicht zu 100% mit allen Punkten überein, aber es könnte Ihnen eine Idee geben.

WCF ist im Grunde genommen "ASMX on stereoids" - es kann alles sein, was ASMX kann - plus viel mehr! .

ASMX ist:

  • leicht und einfach zu schreiben und zu konfigurieren
  • nur in IIS verfügbar
  • nur über HTTP aufrufbar

WCF kann sein:

  • gehostet in IIS, einem Windows-Dienst, einer Winforms-Anwendung, einer Konsolenanwendung - Sie haben völlige Freiheit
  • wird mit HTTP (REST und SOAP), TCP/IP, MSMQ und vielen weiteren Protokollen verwendet

Kurz gesagt: WCF soll ASMX vollständig ersetzen.

Überprüfen Sie das WCF Developer Center auf MSDN .

Update: Link scheint nicht mehr zu funktionieren - versuchen Sie Folgendes: Was ist Windows Communication Foundation?

388
marc_s

ASMX-Webdienste können nur über HTTP aufgerufen werden (traditioneller Webdienst mit .asmx). Der WCF-Dienst oder eine WCF-Komponente kann von jedem Protokoll (wie http, tcp usw.) und jedem Transporttyp aufgerufen werden.

Zweitens sind ASMX-Webdienste nicht flexibel. WCF-Dienste sind jedoch flexibel. Wenn Sie eine neue Version des Dienstes erstellen, müssen Sie nur ein neues Ende anzeigen. Daher sind Dienstleistungen agil und dies ist ein sehr praktischer Ansatz, wenn man die aktuellen Geschäftsentwicklungen betrachtet.

Wir entwickeln WCF als Verträge, Schnittstellen-, Betriebs- und Datenverträge. Als Entwickler konzentrieren wir uns mehr auf die Geschäftslogikdienste und müssen uns nicht um den Kanalstapel kümmern. WCF ist eine einheitliche Programmierschnittstelle für alle Arten von Diensten. Daher erstellen wir den Dienst und verwenden Konfigurationsinformationen, um den Kommunikationsmechanismus wie HTTP/TCP/MSMQ usw. Einzurichten

37
NET Experts

Dies ist eine sehr alte Frage, aber ich glaube nicht, dass die Vorteile von ASMX angemessen dargestellt wurden. ASMX-Webdienste sind zwar nicht sonderlich flexibel, aber sehr einfach zu verwenden und zu verstehen. Während WCF flexibler ist, ist es auch komplexer aufzustehen und zu konfigurieren.

ASMX-Webservices können sofort nach dem Hinzufügen der Datei als Webservice-Referenz hinzugefügt werden. (unter der Annahme, dass Ihr Projekt erstellt wird)

Für den einfachen Entwicklungsworkflow von create webservice -> run webservice -> add webservice reference hat ein ASMX-Webservice sehr wenig, was schief gehen kann, nicht viel, was Sie falsch konfigurieren können, und das ist seine Stärke.

Als Antwort auf diejenigen, die behaupten, dass WCF ASMX ersetzt, würde ich antworten, dass WCF eine optimierte K.I.S.S. Konfigurationsmodus, um ASMX vollständig zu ersetzen.

Beispiel web.config für einen ASMX-Webservice:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings />
  <system.web>
    <compilation targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
  </system.web>
</configuration>
24
Andrew Hoffman

WCF ersetzt ASMX-Webdienste vollständig. ASMX ist die alte Art, Webservices zu erstellen, und WCF ist die aktuelle Art, Webservices zu erstellen. Alle neuen SOAP Web-Service-Entwicklungen auf dem Client oder dem Server sollten mit WCF durchgeführt werden.

11
John Saunders

Es wird viel über die Einfachheit von asmx-Webdiensten über WCF gesprochen. Lassen Sie mich hier einige Punkte klarstellen.

  • Anfänger in der Entwicklung von Webdiensten können problemlos mit den asmx-Webdiensten beginnen. Visual Studio erledigt die gesamte Arbeit für sie und erstellt problemlos ein Hello World-Projekt.
  • Wenn Sie jedoch WCF lernen können (was natürlich nicht viel Zeit in Anspruch nimmt), können Sie feststellen, dass WCF auch recht einfach ist und Sie können problemlos vorgehen.
  • Es ist wichtig, sich daran zu erinnern, dass diese genannten Komplexitäten in WCF tatsächlich auf die schönen Merkmale zurückzuführen sind, die es mit sich bringt. In der Konfigurationsdatei sind Adressen, Bindungen, Verträge und Endpunkte, Dienste und Clients aufgeführt. Das Schöne ist, dass Ihre Geschäftslogik sicher getrennt und gewartet wird. Morgen, wenn Sie die Bindung von basicHttpBinding zu netTcpBinding ändern müssen, können Sie einfach eine Bindung in der Konfigurationsdatei erstellen und diese verwenden. Daher müssen alle Änderungen in Bezug auf Clients, Kommunikationskanäle, Bindungen usw. in der Konfiguration vorgenommen werden, sodass die Geschäftslogik sicher und intakt bleibt, was sehr sinnvoll ist.
  • WCF- "Webdienste" sind Teil eines viel breiteren Spektrums der durch WCF ermöglichten Fernkommunikation. Mit WCF erhalten Sie ein viel höheres Maß an Flexibilität und Portabilität als mit herkömmlichem ASMX, da WCF von Grund auf darauf ausgelegt ist, alle von Microsoft angebotenen verteilten Programminfrastrukturen zusammenzufassen. Ein Endpunkt in WCF kann genauso einfach über SOAP/XML wie über TCP/Binär kommuniziert werden und dieses Medium zu wechseln ist einfach eine Konfigurationsdatei mod. Theoretisch reduziert dies die Menge an neuem Code, die zum Portieren oder Ändern von Geschäftsanforderungen, Zielen usw. benötigt wird.
  • Auf Webdienste kann nur über HTTP zugegriffen werden und sie funktionieren in statusfreien Umgebungen, in denen WCF flexibel ist, da ihre Dienste in verschiedenen Arten von Anwendungen gehostet werden können. Sie können Ihre WCF-Dienste in Console, Windows Services, IIS & WAS hosten. Dies sind wiederum verschiedene Möglichkeiten zum Erstellen neuer Projekte in Visual Studio.
  • ASMX ist älter als WCF und alles, was ASMX kann, kann WCF (und mehr). Grundsätzlich können Sie WCF so sehen, dass es versucht, alle verschiedenen Arten der Kommunikation zwischen zwei Apps in der Microsoft-Welt logisch zusammenzufassen. ASMX war nur eine dieser vielen Möglichkeiten und wird nun unter dem WCF-Funktionsumfang zusammengefasst.
  • Sie werden immer gerne Visual Studio für NET 4.0 oder 4.5 verwenden, da dies das Erstellen von WCF-Diensten vereinfacht.
  • Der Hauptunterschied besteht darin, dass Webdienste XmlSerializer verwenden. WCF verwendet jedoch DataContractSerializer, der im Vergleich zu XmlSerializer eine bessere Leistung aufweist. Das ist der Grund, warum WCF weitaus besser abschneidet als andere Gegenstücke der Kommunikationstechnologie von .NET wie asmx, .NET-Remoting usw.

Um nicht zu vergessen, dass ich einer von jenen Leuten war, die asmx-Dienste mehr mochten als WCF, aber diesmal war ich mir der WCF-Dienste und ihrer Fähigkeiten nicht bewusst. Ich hatte Angst vor den WCF-Konfigurationen. Aber ich habe es gewagt und versucht, ein paar eigene WCF-Dienste zu schreiben, und als ich mehr über WCF erfuhr, habe ich jetzt keine Hemmungen mehr für WCF und empfehle sie jedem und jedem. Viel Spaß beim Programmieren !!!

6
Sagnik Majumder