2008-08-09 14 views
32

Ich arbeite an einem neuen Projekt. Gibt es einen Vorteil, wenn Sie mit einem WCF-Webdienst über einen normalen Webservice für alte Mode gehen?Webdienste - WCF vs. ASMX ("Standard")

Visual Studio bietet Vorlagen für beide an. Was sind die Unterschiede? Vor-und Nachteile?

+9

WCF eine unglaublich große Lernkurve hat, keinen Fehler machen. Ja, man kann einen Service nicht allzu höllisch mit etwas Kopieren und Einfügen und Füllen der Lücken erreichen, aber es wird die meisten Entwickler Monate dauern, bevor sie verstehen, was all diese Konfiguration und das Setup tatsächlich tun. – Sander

+2

Die meisten Entwickler müssen _nicht_ die gesamte Konfiguration verstehen, und außerdem hat sich das mit .NET 4.0 grundlegend geändert. –

+0

Ich kann für die Tatsache bürgen, dass es eine steile Lernkurve ist. WCF ist fast byzantinisch. Ich habe es etwa einen Monat lang studiert und ich fange nur langsam an, es zu verstehen. Es gibt viele Komplexitäten um verschiedene Sicherheitsmethoden, verschiedene Arten von digitalen Zertifikaten und Client/Server-Validierung. Es gibt viele sehr gute Videoanleitungen. Schau auf questpond.com. Ich kann mich nicht erinnern, dass ASMX ziemlich erschütternd ist, aber WCF scheint sehr mächtig zu sein und es hat sich gelohnt. –

Antwort

32

Was ist ein "normaler altmodischer Webservice?" Ein ASMX-Dienst oder verwenden Sie auch WSE? ASMX-Dienste sind nicht von Natur aus interoperabel, unterstützen keine WS-* -Spezifikationen, und ASMX ist eine Technologie, die sehr schnell altert. WSE-Dienste (Web Service Enhancements) fügen Unterstützung für WS- * hinzu und können interoperabel gemacht werden, aber WCF soll WSE ersetzen, also sollten Sie sich die Zeit nehmen, es zu lernen. Ich würde sagen, dass, wenn Ihre Anwendung nicht schnell eine schmutzige einmalige ist, Sie immense Flexibilität erhalten und mit einem besseren Design enden, wenn Sie sich für WCF entscheiden. WCF hat eine Lernkurve über eine [WebMethod] -Attribut, aber die Lernkurve ist meiner Meinung nach übertrieben, und es ist exponentiell mächtiger und zukunftssicherer als ältere ASMX-Dienste.

Sofern Ihre Zeit nicht einfach die Lernkurve tolerieren kann, würden Sie sich selbst einen großen Gefallen tun, WCF zu lernen, anstatt nur mit ASP.NET Web Services zu bleiben. Anwendungen werden immer mehr und mehr verteilt und miteinander verbunden, und WCF ist die Zukunft des verteilten Rechnens auf der Microsoft-Plattform.

Here is a comparison zwischen den beiden.

9

Die Profis von selbst alles tun, ist:

  • Keine Lernkurve
  • Sehr flexibel

Die Profis von WCF sind:

  • kostet weniger Zeit in der längerer Lauf
  • Switch-Protokolle ohne Programmierung

Ein Nachteil WCF: einige statische Eigenschaftsnamen can be pretty lengthy ...

Fassen wir zusammen: WCF können Sie sich auf die Programmierung konzentrieren, aber Sie müssen es erst lernen ;-)

2

ich mag Das Schreiben von WCF-Services macht es einfach, Ihren Dienst von der Implementierung zu trennen. Sie können Ihren Dienst schreiben und ihn dann in IIS, einer Konsolenanwendung oder einem Windows-Dienst hosten. Sie können auch über HTTP, TCP, etc. mit ihm kommunizieren.

3

Pro für WCF: Sie benötigen keinen Webserver (d. H. IIS). Sie benötigen kein Server-Betriebssystem.

1

Komponententests auf Ihre Dienste Implantation und Interaktion sind einfacher zu tun!

-2

Nach meiner Erfahrung

WCF

Es ist unsinnig ausführliches mit ihm zu arbeiten, ist es nicht ganz kompatibel mit anderen Microsoft-Produkten und natürlich ist es nicht allgemein akzeptiert außerhalb ot des Microsoft Welt.

Aber mein Hauptproblem ist, es ist nicht stabil, es neigt dazu, zu scheitern (in einigen Situationen) und es erfordert, um es zu zwicken, bevor es verwendet werden kann.

Statt

SOAP (auch bekannt als Standard Webservice), es funktioniert, ist es einfach zu arbeiten und es ist weitgehend kompatibel (Java-JAX akzeptiert es ohne Änderung).

Das Hinzufügen von Authentifizierung in SOAP könnte ein bisschen schwierig, aber nicht unmöglich sein.

+4

-1 für Fehlinformation und unbegründete Meinung. Ich kann nur annehmen, dass Sie über Konfiguration sprechen, wenn Sie sagen, dass WCF "ausführlich" ist, in diesem Fall sollten Sie anfangen, .NET 4.0 oder 4.5 zu verwenden. "Nicht kompatibel mit anderen Microsoft-Produkten" sollte begründet werden, wenn Sie ernst genommen werden wollen. Aber Sie verlieren alle Glaubwürdigkeit, indem Sie WCF mit SOAP abgleichen. –

+0

@John Saunders, also trollst du mich ohne Grund. Sheesh Typ. Und nein, auch im Netto 4.0 ist der WF noch halb gebacken. Wie auch immer, WCF ist Hersteller gesperrt. – magallanes

+1

Youb haben eindeutig keine Ahnung, wovon du redest. "Verkäufer gesperrt" ist offensichtlicher Unsinn. Sie können meine Meinung korrigieren, indem Sie Fakten präsentieren und nicht schimpfen. –

0

Wenn Ihr Projekt Framework 4.0 verwendet, warum versuchen Sie nicht WebApi, das ist einfach zu verstehen und verwendet die Konvention über die Konfiguration.

Sein eine große Weise Anwendung des Gebäudes mit superschnellen Schnittstellen

hat Blick auf den Ersten Schritten Videos von MS hat es dich von WCF Data Service entwickelt.

http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api