2009-01-05 4 views

Antwort

2

Ich denke, es ist fair zu sagen, dass WCF ersetzt ASMX und Remoting. Sie können mit ASMX und Remoting alles erreichen, was Sie können, und mehr mit WCF, aber Sie haben viel mehr Funktionen und können viel besser steuern, was passiert.

Also ich glaube, dass, wenn Sie können, Sie WCF verwenden sollten.

4

WCF ist eine Kommunikationsbibliothek, die sowohl den .NET-Remoting- als auch den "alten" ASMX-Webdienst und den Nachfolger beider Bibliotheken enthält.

WCF-Webservices haben eine viel bessere Unterstützung für WS-* -Standards und haben weniger Probleme mit der Interoperabilität.

Grundsätzlich sollten Sie WCF seit .net Remoting und ASMX könnte legecy in Betracht gezogen werden (und, wenn ich mich richtig erinnere, nur einige .NET Remoting Fehler in WCF behoben wurden und nie in .NET Remoting selbst)

10

WCF ist ein Kommunikationsstapel, der die Bereitstellung von Diensten über HTTP (wie ASMX) und TCP (wie Remoting) sowie Named Pipes (was wirklich ein Cross-Process-Aufruf innerhalb von Maschinen ist), MSMQ und .NET 3.5 REST ermöglicht.

Es ermöglicht dies, weil es die Kommunikationsteile des Dienstes von der Geschäftslogik entkoppelt ist. Sie müssen lediglich Ihre Serviceklassen, Methoden und DTOs mit dem entsprechenden Vertragsattribut ([SeriviceContract], [OperationContract] und [DataContract]) dekorieren.

Dies hatte den Vorteil, dass Sie einmal einen Dienst schreiben konnten und ermöglichen, dass viele verschiedene Arten von Clients den gleichen Dienst nutzen (dh Java-Clients können HTTP verwenden, .NET-Clients können TCP verwenden, Legacy kann MSMQ verwenden usw.).

Mit WCF können Sie weiterhin alle Funktionen jedes Transports nutzen, einschließlich Sicherheit, Transaktionen, zuverlässiges Messaging usw., aber Sie müssen vorsichtig sein. Nicht alle Funktionen funktionieren auf allen Transporten und Sie müssen entsprechend planen. Mit WCF können Sie in Ihrem Vertrag angeben, welche Funktionen benötigt werden. Dies verhindert, dass somone versucht, Ihren Service so verfügbar zu machen, dass das erforderliche Feature-Set nicht unterstützt wird (d. H. Wenn Ihr Service Transaktionen erfordert, lässt die WCF-Laufzeit den Zugriff auf den Service über einen einfachen HTTP-Endpunkt nicht zu).

WCF ist auch erweiterbar über benutzerdefinierte Verhaltensweisen (die beeinflussen, wie die WCF-Laufzeit arbeitet) und benutzerdefinierte Kanäle (die steuern, wie WCF-Dienste mit der Außenwelt kommunizieren.)

WCF ein bisschen eine Lernkurve im Vergleich zu ASMX, aber die Vorteile ABSOLUT aus Gewicht diese Lernkurve.

Hoffe, dass hilft.

+1

In WCF kann DataContractSerializer auf nicht öffentliche Member zugreifen, sodass vollständige Vertrauenswürdigkeit erforderlich ist, während XML-Serializer (in Webdiensten) dies nicht tut. Dies sollte mit Vorsicht verwendet werden, da vollständig vertrauenswürdiger Code auf alle Ressourcen auf Ihrem Computer zugreift. – Adeel

Verwandte Themen