388 Stimmen

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

Ich bin völlig verwirrt zwischen WCF und ASMX Web Services. Ich habe in meiner früheren Phase eine Menge Webdienste verwendet, und jetzt gibt es diese neue Sache namens WCF. Ich kann immer noch WCF erstellen, die wie ein Webdienst funktionieren. Ich denke, dass WCF noch viel mehr zu bieten haben wird.

Was sind die Unterschiede zwischen WCF und Webdiensten? Wann sollten beide verwendet werden?

403voto

marc_s Punkte 701497

Keith Elder vergleicht sehr schön ASMX zu WCF hier. Sehen Sie es sich an.

Ein weiterer Vergleich von ASMX und WCF kann sein hier gefunden - Ich stimme nicht mit allen Punkten zu 100% überein, aber es könnte Ihnen einen Eindruck vermitteln.

WCF ist im Grunde "ASMX auf Stereoiden" - es kann alles sein, was ASMX konnte - plus viel mehr! .

ASMX ist:

  • leicht und einfach zu schreiben und zu konfigurieren
  • nur im IIS verfügbar
  • nur von HTTP aufrufbar

WCF sein kann:

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

Kurz gesagt: WCF ist hier, um ASMX vollständig zu ersetzen.

Sehen Sie sich die WCF-Entwicklerzentrum auf MSDN .

更新しました。 Der Link scheint tot zu sein - versuchen Sie dies: Was ist Windows Communication Foundation?

36voto

NET Experts Punkte 1495

ASMX Webservices können nur über HTTP aufgerufen werden (traditioneller Webservice mit .asmx). Während ein WCF-Dienst oder eine WCF-Komponente über jedes Protokoll (wie http, tcp usw.) und jeden Transporttyp aufgerufen werden kann.

Zweitens sind ASMX-Webdienste nicht flexibel. WCF-Dienste hingegen sind flexibel. Wenn Sie eine neue Version des Dienstes erstellen, brauchen Sie nur ein neues Ende freizugeben. Daher sind Dienste agil, was angesichts der aktuellen Geschäftstrends ein sehr praktischer Ansatz ist.

Wir entwickeln WCF als Verträge, Schnittstellen, Operationen und Datenverträge. Als Entwickler konzentrieren wir uns mehr auf die Geschäftslogikdienste und müssen uns nicht um den Channel Stack kümmern. WCF ist eine einheitliche Programmier-API für jede Art von Diensten, so dass wir den Dienst erstellen und Konfigurationsinformationen verwenden, um den Kommunikationsmechanismus wie HTTP/TCP/MSMQ usw. einzurichten.

27voto

Andrew Hoffman Punkte 752

Dies ist eine sehr alte Frage, aber ich bin der Meinung, dass die Vorteile von ASMX nicht angemessen dargestellt wurden. ASMX-Webdienste sind zwar nicht sonderlich flexibel, aber sehr einfach zu verwenden und zu verstehen. WCF ist zwar flexibler, aber auch komplexer in der Einrichtung und Konfiguration.

ASMX-Webdienste sind bereit, sich aufzustellen und als Webdienst-Referenz hinzuzufügen, sobald Sie die Datei hinzufügen. (vorausgesetzt, Ihr Projekt wird gebaut)

Für den einfachen Entwicklungs-Workflow von create webservice -> run webservice -> add webservice reference Bei einem ASMX-Webservice kann nur sehr wenig schief gehen, es gibt nicht viel, was man falsch konfigurieren kann, und das ist seine Stärke.

Denjenigen, die behaupten, dass WCF ASMX ersetzt, möchte ich entgegnen, dass WCF einen optimierten K.I.S.S.-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>

12voto

John Saunders Punkte 159011

WCF ersetzt vollständig die ASMX-Webdienste. ASMX ist die alte Art, Webdienste zu erstellen, und WCF ist die aktuelle Art, Webdienste zu erstellen. Alle neuen SOAP-Webdienste, ob auf dem Client oder dem Server, sollten mit WCF entwickelt werden.

7voto

Sagnik Majumder Punkte 81

Es wird viel über die Einfachheit von asmx Web Services gegenüber WCF gesprochen. Lassen Sie mich hier einige Punkte klären.

  • Es ist wahr, dass Anfänger Web-Service-Entwickler erhalten leicht in asmx Web-Services gestartet. Visual Studio nimmt ihnen die ganze Arbeit ab und erstellt ohne weiteres ein Hello World-Projekt.
  • Aber wenn Sie WCF lernen können (was natürlich nicht viel Zeit in Anspruch nimmt), dann können Sie sehen, dass WCF auch ziemlich einfach ist, und Sie können leicht weitermachen.
  • Es ist wichtig, sich daran zu erinnern, dass diese besagten Komplexitäten in WCF eigentlich auf die schönen Funktionen zurückzuführen sind, die es mit sich bringt. Es gibt Adressierung, Bindungen, Verträge und Endpunkte, Dienste und Clients, die alle in der Konfigurationsdatei erwähnt werden. Das Schöne daran ist, dass Ihre Geschäftslogik abgetrennt und sicher verwaltet wird. Wenn Sie morgen die Bindung von basicHttpBinding a netTcpBinding können Sie ganz einfach eine Bindung in der Konfigurationsdatei erstellen und diese verwenden. Alle Änderungen in Bezug auf Clients, Kommunikationskanäle, Bindungen usw. müssen also in der Konfiguration vorgenommen werden, wobei die Geschäftslogik sicher und intakt bleibt, was wirklich sinnvoll ist.
  • WCF-"Web Services" sind Teil eines viel breiteren Spektrums von Fernkommunikation, die durch WCF ermöglicht wird. Mit WCF erhalten Sie ein viel höheres Maß an Flexibilität und Portabilität als mit dem traditionellen ASMX, da WCF von Grund auf so konzipiert ist, dass es alle verschiedenen von Microsoft angebotenen verteilten Programmierinfrastrukturen zusammenfasst. Ein Endpunkt in WCF kann genauso einfach über SOAP/XML wie über TCP/Binär kommuniziert werden, und der Wechsel des Mediums ist einfach eine Änderung der Konfigurationsdatei. Theoretisch reduziert dies die Menge an neuem Code, die bei der Portierung oder Änderung von Geschäftsanforderungen, Zielen usw. erforderlich ist.
  • Auf Webdienste kann nur über HTTP zugegriffen werden und sie arbeiten in einer zustandslosen Umgebung, während WCF flexibel ist, weil 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, was wiederum verschiedene Möglichkeiten zur Erstellung neuer Projekte in Visual Studio sind.
  • ASMX ist älter als WCF, und alles, was ASMX kann, kann auch WCF (und mehr). Grundsätzlich kann man WCF als einen Versuch sehen, all die verschiedenen Möglichkeiten der Kommunikation zwischen zwei Anwendungen in der Microsoft-Welt logisch zusammenzufassen; ASMX war nur eine dieser vielen Möglichkeiten und wird daher jetzt unter dem WCF-Dach der Fähigkeiten zusammengefasst.
  • Sie werden immer gerne Visual Studio für NET 4.0 oder 4.5 verwenden, da es Ihnen das Leben bei der Erstellung von WCF-Diensten erleichtert.
  • Der Hauptunterschied besteht darin, dass Webdienste den XmlSerializer verwenden. Aber WCF verwendet DataContractSerializer, die besser in der Leistung im Vergleich zu XmlSerializer ist. Aus diesem Grund ist WCF viel leistungsfähiger als andere Kommunikationstechnologien von .NET wie asmx, .NET remoting usw.

Nicht zu vergessen, dass ich einer derjenigen war, die asmx-Dienste mehr mochten als WCF, aber damals war ich mir der WCF-Dienste und ihrer Möglichkeiten noch nicht bewusst. Ich hatte Angst vor den WCF-Konfigurationen. Aber ich habe mich getraut und versucht, selbst ein paar WCF-Dienste zu schreiben, und als ich mehr über WCF gelernt habe, habe ich jetzt keine Hemmungen mehr, WCF zu nutzen, und ich empfehle sie jedem und jeder. Viel Spaß beim Programmieren!!!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X