web-services service - Was sind die Unterschiede zwischen WCF-und ASMX-Webdiensten?




wsdl exchange (5)

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

ASMX-Webdienste sind bereit, aufzustehen und als Webservice-Referenz hinzuzufügen, sobald Sie die Datei hinzufügen. (vorausgesetzt, Ihr Projekt baut)

Für den einfachen Entwicklungs-Workflow 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 einen optimierten KISS-Konfigurationsmodus hinzufügen müsste, 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>

Ich bin völlig verwirrt zwischen WCF und ASMX Web Services. Ich habe in meiner früheren Phase viele Web-Services verwendet, und jetzt gibt es dieses neue Ding namens WCF. Ich kann immer noch WCF erstellen, das als Web-Service funktioniert. Ich denke, es wird mehr Sachen in WCF geben.

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


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


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

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

WCF ist grundsätzlich "ASMX on Stereoids" - es kann alles sein, was ASMX könnte - und noch viel mehr! .

ASMX ist:

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

WCF kann sein:

  • gehostet in IIS, ein Windows-Dienst, eine Winforms-Anwendung, eine Konsolen-App - Sie haben völlige Freiheit
  • verwendet mit HTTP (REST und SOAP), TCP / IP, MSMQ und vielen weiteren Protokollen

Kurz: WCF ersetzt ASMX vollständig.

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

Update: Link scheint tot zu sein - versuchen Sie Folgendes: Was ist Windows Communication Foundation?


Es gibt eine Menge Gespräche über die Einfachheit von asmx Web Services gegenüber WCF. Lassen Sie mich hier einige Punkte klären.

  • Es ist wahr, dass Anfänger Web-Service-Entwickler leicht in asmx Web-Services gestartet werden können. Visual Studio erledigt die Arbeit für sie und erstellt sofort ein Hello World-Projekt.
  • Aber wenn Sie WCF lernen können (was natürlich nicht viel Zeit braucht), dann können Sie sehen, dass WCF auch ganz einfach ist, und Sie können leicht voran gehen.
  • Es ist wichtig, daran zu denken, dass diese genannten Komplexitäten in WCF tatsächlich den schönen Eigenschaften zugeschrieben werden, die es mit sich bringt. Es gibt Adressierung, Bindungen, Verträge und Endpunkte, Dienste und Clients, die alle in der Konfigurationsdatei erwähnt werden. Die Schönheit ist Ihre Geschäftslogik ist abgesondert und sicher gepflegt. Morgen, wenn Sie die Bindung von basicHttpBinding zu netTcpBinding ändern müssen , können Sie einfach eine Bindung in der Konfigurationsdatei erstellen und sie verwenden. Daher müssen alle Änderungen in Bezug auf Clients, Kommunikationskanäle, Bindungen usw. in der Konfiguration vorgenommen werden, um die Geschäftslogik sicher und intakt zu lassen, was sehr sinnvoll ist.
  • WCF "Web Services" sind Teil eines viel breiteren Spektrums von Remote-Kommunikation, die durch WCF ermöglicht wird. In WCF erhalten Sie einen wesentlich höheren Grad an Flexibilität und Portabilität als mit herkömmlichem ASMX, da WCF von Grund auf so konzipiert ist, dass alle von Microsoft angebotenen verteilten Programmierinfrastrukturen zusammengefasst werden. Ein Endpunkt in WCF kann genauso einfach über SOAP / XML kommuniziert werden wie über TCP / Binär, und dieses Medium zu ändern ist einfach eine Konfigurationsdatei mod. Theoretisch verringert dies die Menge an neuem Code, der benötigt wird, um geschäftliche Anforderungen, Ziele usw. zu portieren oder zu ändern.
  • Auf Web Services kann nur über HTTP zugegriffen werden, und es funktioniert in einer zustandslosen Umgebung, in der WCF flexibel ist, da seine Dienste in verschiedenen Arten von Anwendungen gehostet werden können. Sie können Ihre WCF-Dienste in Console, Windows Services, IIS und WAS hosten, die wiederum unterschiedliche Möglichkeiten zum Erstellen neuer Projekte in Visual Studio bieten.
  • ASMX ist älter als WCF und alles, was ASMX kann, kann WCF (und mehr). Im Grunde können Sie WCF so sehen, als würden Sie versuchen, alle verschiedenen Möglichkeiten, zwei Apps in der Welt von Microsoft zu kommunizieren, logisch zusammenzufassen. ASMX war nur eine dieser vielen Möglichkeiten und wird nun unter dem Dach der WCF zusammengefasst.
  • Sie werden immer Visual Studio für NET 4.0 oder 4.5 verwenden, da es das Erstellen von WCF-Diensten erleichtert.
  • Der Hauptunterschied besteht darin, dass Web Services XmlSerializer verwenden. Aber WCF verwendet DataContractSerializer, der im Vergleich zu XmlSerializer eine bessere Leistung bietet. Aus diesem Grund ist WCF weitaus besser als andere Kommunikationstechnologien von .NET wie asmx, .NET remoting usw.

Nicht zu vergessen, dass ich einer von denen war, die asmx-Dienste mehr als WCF mochten, aber damals war ich mir der WCF-Dienste und ihrer Fähigkeiten nicht sehr bewusst. Ich hatte Angst vor den WCF-Konfigurationen. Aber ich habe es gewagt und versucht, einige WCF-Dienste selbst zu schreiben, und als ich mehr von WCF gelernt habe, habe ich jetzt keine Hemmungen von WCF und empfehle sie jedem und jedem. Fröhliche Codierung !!!


Nun, ich würde der vorherigen Antwort nicht zustimmen. WCF Ria Sercices ist eine großartige Architektur und Zeiten haben bewiesen bewiesen. Ich würde eher einen Blick auf http://blogs.msdn.com/b/saurabh/archive/2009/11/23/understanding-the-wcf-in-wcf-ria-services.aspx werfen

Tatsächlich benutze ich WCF Ria Services für eine große LOB-Anwendung, die auf mehr als 1500 Benutzer abzielt. Ich habe die Client-Code-Generierungs-Anpassung massiv genutzt (siehe den Varun-Blog für Details), aber ich bin in der Lage, LINQ über die Leitung mit Silverlight zu verwenden und ich habe die Wahl zwischen automatischem faulem oder eifrigem Laden unter den Berechtigungen auf dem Kontext. Und vergessen Sie nicht, dass das Restparadigma von WCF Ria Services auch die Verwendung von OutputCache erlaubt.

Nicht zu erwähnen ist, dass Sie dank Custom Metadatenprovider die Generierung des Clients und die Serialisierung der Daten zum Client erheblich vereinfachen können. Ich glaube, wenn Ihre Silverlight-Anwendung kontextbasiert ist, können Sie sicher mit WCF Ria Services gehen. Hoffe das hilft, Marco





wcf web-services asmx