2010-12-03 6 views
7

Die Absicht ist es, eine Reihe von Web-Services, die Menschen wiederverwenden können. Diese Dienste interagieren meist mit einer Back-End-Datenbank, die Daten erstellt, retreißt und verarbeitet.WCF vs ASPX webmethods vs ASMX webmethods

Wir möchten Dienste bereitstellen, mit denen Benutzer Daten-Mashups und andere Anwendungen erstellen können.

Endbenutzer sind Webseiten, die innerhalb unserer Domain oder außerhalb unserer Domain liegen können. Für Seiten außerhalb der Domain möchten wir Widgets veröffentlichen, die so konfiguriert werden, dass sie die Daten abrufen und anzeigen.

Eine Anforderung: Die Anwendung sollte hinsichtlich der Anzahl der Benutzer, die sie verarbeiten kann, extrem skalierbar sein.

Unsere Codebasis ist .net und wir betrachten ASPX Webmethoden (oder ASHX), ASMX Webmethoden und WCF (beginnend mit WCF zu lesen).

In Bezug auf Sicherheit/Zugriff habe ich festgestellt, dass die Aufrechterhaltung SessionID, Mitgliedschaften in allen drei machbar ist. WCF scheint etwas kompliziert zu sein. Ich konnte den Wert von asmx nicht sofort sehen, wenn wir alles erledigt haben, indem wir nur eine Webmethode in aspx verwenden (mit ein wenig Feinabstimmung).

Auch unter der Annahme, dass mit der ASP.NET MVC2 könnte ich auch saubere URLs für diese Webmethoden erhalten.

Fragen

Welches der effektivste im Hinblick auf die Leistung wird und Skalierbarkeit? Warum sollte ich WCF oder ASMX wählen?

Vielen Dank, dass Sie sich die Zeit genommen haben, diesen Beitrag zu lesen und sich für die naiven Fragen zu entschuldigen, da ich neu bei .net bin.

EDIT Ich verstehe, dass WCF der Weg ist zu gehen. Um die Entwicklung der Technologien zu verstehen, wäre es gut, wenn jemand erklären könnte, warum ein aspx-Webverfahren sich von einem asmx unterscheidet, wenn ähnliche Dinge (abgesehen von der Entdeckung) von beiden erreicht werden können. Die aspx-Webmethoden können Daten in anderen Formaten (Klartext, JSON) zurückgeben. Es scheint auch, dass wir mit Hilfe von Aschx erholsame Dienste aufbauen können. Entschuldigung nochmals für die naiven Fragen.

Antwort

9

Sie sollten WCF zum Entwickeln von Webdiensten in .Net verwenden. WCF ist sehr konfigurierbar mit vielen Optionen für Sicherheit, Transportprotokolle, Serialisierung, Erweiterungen usw. Raw performance ist auch deutlich höher. Auch WCF wird aktiv entwickelt und viele neue Funktionen in Version 3.5 und 4 hinzugefügt. Es gibt auch Variationen wie WCF Datendienste und WCF RIA-Dienste. WCF 4.0 hat auch bessere REST- und JSON-Unterstützung, die Sie direkt in ASP.Net/JQuery verwenden können.

+0

Ich habe mich gefragt, was war der Sinn WCF zu verwenden und Ihre Antwort hat mich dazu gebracht, meine Meinung zu ändern. Es ist großartig zu sehen, dass Jquery so viel Unterstützung bekommt. –

+0

JQuery-Unterstützung wird noch mehr verbessern. Sie können die WCF Web API-Vorabversion bereits erhalten. http://wcf.codeplex.com/wikipage?title=WCF%20jQuery – softveda

+0

ASMX-Seiten bieten JSON-Unterstützung. http://encosia.com/asmx-and-json-common-mistakes-and-misconceptions/ – mattmc3

3

ASMX gilt als veraltete Technologie und wird durch WCF ersetzt. Wenn Sie also eine Neuentwicklung beginnen, bei der wiederverwendbare Dienste verfügbar gemacht werden müssen, ist WCF der richtige Weg.

+3

Haben Sie eine tatsächliche Ressource, die Sie bezüglich Ihrer Behauptung angeben können, dass ASMX veraltet ist? – mattmc3

+1

Link zur Dokumentation für wsdl.exe-Tool für .NET 3.5: (http://msdn.microsoft.com/en-us/library/7h3ystb6(VS.90).aspx). Beachten Sie den Text "Dieses Thema ist spezifisch für eine ältere Technologie. XML-Webdienste und XML-Webdienstclients sollten jetzt mit Windows Communication Foundation (WCF) erstellt werden.". – dana

1

Ich stimme nicht unbedingt mit der vorherigen Antwort. Aus einer anderen Perspektive ist WFC jedoch schwierig zu konfigurieren. Es erfordert Bindungen, Endpunkte, Paketgrößen, viele Konfusionsparameter usw. in Ihren Konfigurationsdateien, und es werden viele Serialisierungs-/Deserialisierungsprobleme gemeldet. Auch WCF ist eine relativ neue Technologie (daher immer noch Bugs und Patches ausgesetzt). Der Client generiert [Referenz.cs] -Dateien haben möglicherweise unerwünschte Schnittstellen, und jede in der WSDL bereitgestellte Clientklasse für öffentliche Eigenschaften wird mit demselben Beobachtungsmuster generiert, das LINQ to SQL oder Entity Framework verwendet (OnChanged, OnChanging usw.), wodurch dem Client eine Menge Fett hinzugefügt wird Code, im Gegensatz zu den traditionellen SOAP-Web-Client-Weg. Meine Empfehlung, wenn Sie Remoting über TCP nicht verwenden oder wenn Sie den 2-Wege-Benachrichtigungsmechanismus für Remote-Änderungen nicht benötigen - all das sind sehr coole Funktionen von WCF - müssen Sie es nicht verwenden.

+2

-1 Ihre Daten sind veraltet. Unter anderem ist WCF seit 2006 nicht mehr verfügbar. Sie können auch problemlos veranlassen, INotifyPropertyChanged nicht zu generieren, was nichts mit entfernten Änderungen zu tun hat. –

+0

sollten Sie Domänemodelle sowieso nicht durch WCF übergeben. –