2010-06-19 7 views
5

Ich bin in den frühen Phasen der Entwicklung einer Website mit Jquery. Ich frage mich, ob ich Pagemethods oder WCF-Service-Klasse verwenden soll. Ich sah in einer der SO-Antworten, die besagt, WCF in allen zukünftigen Anforderungen so viel wie möglich zu verwenden. Hoch schätzen, wenn jemand erklären kann, was die entscheidenden Faktoren und Sicherheitsvorkehrungen sind.Jquery WCF vs Pagemethoden

Antwort

0

PageMethods verwenden viel von der gleichen Technologie, die von ASMX-Webdiensten verwendet wird. Diese Technologie stagniert. Es wird nicht erwartet, dass es verbessert wird, und es wird erwartet, dass nur kritische Fehler behoben werden. Das ist keine gute Grundlage für einen produktionsfertigen Code.

1

Es ist nichts Falsches daran, eine Page Method oder ASMX ScriptService zu verwenden, wenn sie Ihren Anforderungen entsprechen.

WCF bringt auf jeden Fall zusätzliche Leistung, Flexibilität und Funktionen auf den Tisch, aber das bringt zusätzliche Komplexität mit sich. Wenn Sie nicht beabsichtigen, diese Verbesserungen zu verwenden, dann bringt es nur die Komplexität.

Die Leute werden Ihnen sagen, dass der ScriptService-Ansatz "Legacy" ist, basierend auf ein bisschen Header-Text auf einem MSDN-Artikel, aber das ist übertrieben proportional. In der Tat, newer versions of those same articles nicht mehr den Haftungsausschluss tragen. Es musste eine bewusste Entscheidung gewesen sein. Serverseitige ASP.NET AJAX- und ScriptServices werden in absehbarer Zeit nirgendwohin gehen.

Wenn Sie nur einen AJAX-Rückrufendpunkt im selben Projekt hosten wie die Seite, die ihn aufruft, können Sie die Seitenmethoden und ScriptServices für die Benutzerfreundlichkeit nicht schlagen. Ich habe nie eine gute Diskussion darüber gesehen, warum die Komplexitätsproblematik von WCF in diesem Szenario gerechtfertigt ist, abgesehen von FUD-Argumenten über Obsoleszenz.

Der JavaScriptSerializer der ScriptService/Page-Methode deserialisiert auch DateTime und enum-Eingabeparameter geringfügig flexibler als WCFs DataContractJsonSerializer, was oft ziemlich praktisch ist.

1

ich konfrontiert kürzlich eine ähnliche Entscheidung - hier einige Dinge, die stark unsere Entscheidung beeinflusst:

ASMX und Pagemethods im ASP.NET-Dienst ausgeführt, so können sie die gleichen Sitzungsdaten wie die ASP.NET-Seiten zu teilen. Wenn Sie die Sitzung intensiv nutzen (ich werde nicht darauf eingehen, ob das eine gute Übung ist oder nicht - das ist eine völlig andere Diskussion), dann kann es von erheblichem Vorteil sein, sie zwischen Ihren Seitenanrufen und Webservice-Anrufen zu teilen. In unserem Fall speichern wir tatsächlich bestimmte Berechtigungsinformationen in der Sitzung. Wenn wir uns dazu entscheiden, unsere Webdienste als WCF zu implementieren, müssen wir auch unser eigenes Single-Sign-On-Framework zwischen dem Webservice und dem ASP.NET-Dienst bereitstellen. Nichts ist falsch daran, aber es ist Design/Entwicklung/Testzeit, die Sie vielleicht nicht investieren möchten.

Wenn sich Ihr Webservice auf einer anderen Adresse/einem anderen Port als Ihrem ASP.NET-Dienst befindet, werden alle Aufrufe von Ihrer Seite als Cross-Site Scripting (XSS) betrachtet und vom Browser erheblich eingeschränkt. Es gibt Problemumgehungen (meist in Form von JSONP), aber diese Problemumgehungen haben auch Einschränkungen; Beispielsweise werden nur HTTP-Anforderungen vom GET-Typ unterstützt. Da ASMX/PageMethods innerhalb des ASP.NET-Servers selbst ausgeführt werden, werden sie nicht als XSS-Anforderungen betrachtet. Wenn Sie sicherstellen können, dass Ihr WCF-Dienst immer unter derselben Adresse/demselben Port wie Ihr ASP.NET-Server bereitgestellt wird, werden sie natürlich auch nicht als XSS betrachtet. In diesem Fall ist dieses Problem nicht relevant.

Vom Standpunkt der Zukunftssicherheit wird WCF wahrscheinlich mehr Aufmerksamkeit (Patches, Verbesserungen usw.) von MS erfahren als ASMX/PageMethods. Allerdings ist KEINE Technologie völlig zukunftssicher (Sie denken nicht, dass wir in 10 Jahren noch WCF-Dienste schreiben werden, oder?).Sie müssen also Ihre eigene Komfortstufe (oder die Ihrer Kunden) in Bezug auf die mögliche zukünftige Abwertung von ASMX messen.

+0

Etwas, das leicht zu übersehen ist, bis Sie in einem Projekt knietief sind, ist, dass der JavaScriptSerializer von ASMX ScriptServices flexibler ist als der DataContractJsonSerializer von WCF, wenn es um die Analyse von Datums- und Enum-Eingabeparametern geht. –