Frage

Ich verstehe den Wert der drei-Teil-service - /host - /client-Modell angeboten von WCF.Aber ist es nur ich oder scheint es, WCF nahm etwas ziemlich direkt und unkompliziert (die ASMX-Modell) und ein Chaos dabei heraus?

Gibt es eine alternative zur Verwendung von SvcUtil Befehlszeile Schritt zurück in der Zeit um den proxy zu generieren?Mit ASMX-Dienste einen Testumgebung wurde automatisch bereitgestellt;gibt es eine gute alternative ist heute mit WCF?

Ich Schätze, dass der WS* Sachen, die ist mehr fest integriert, die mit WCF und Hoffnung zu finden, einige Belohnung für WCF gibt, aber geeze, ansonsten bin ich ratlos.

Auch der Zustand der Bücher für die WCF ist miserabel am besten.Juval LÖWY, eine hervorragende Autorin, geschrieben hat, einen guten O ' Reilly Buch "Programming WCF Services" aber es tut nicht viel zu tun hat (für mich jedenfalls) für das lernen jetzt mit WCF.Das Buch ist Vorläufer (und ein wenig besser organisiert, aber nicht viel, wie ein tutorial), ist Michele Leroux Bustamante ' s Learning WCF.Es hat eine gute spots, aber ist nicht mehr im Ort und die zugehörige Web-site ist Weg.

Sie haben gute WCF-learning Referenzen neben nur fortfahren, um die Google bejebus der Dinge?

War es hilfreich?

Lösung

Okay, hier gehen wir.Erste, Michele Leroux Bustamante Buch wurde aktualisiert für VS2008.Die website zum Buch ist nicht verschwunden.Es ist jetzt, und es hat Tonnen von großen WCF-info.Auf dieser website bietet Sie Ihre aktualisierten code-kompatibel mit VS2008 für alle Beispiele in Ihrem Buch.Wenn Sie eine Bestellung von Amazon, erhalten Sie die Neuauflage ist aktualisiert.

WCF ist nicht nur ein Ersatz für ASMX.Sicher, es kann (und tut ganz gut) ersetzen ASMX, aber der wirkliche Vorteil ist, dass es erlaubt, Ihre Dienste werden selbst gehostet.Die meisten Funktionen, die von WSE gebacken wurde von Anfang an ein.Der Rahmen ist mit hoch konfigurierbar, und die Fähigkeit, auf mehrere Endpunkte über mehrere Protokolle ist erstaunlich, IMO.

Während Sie immer noch generieren von proxy Klassen von "Add Service Reference" option, es ist nicht notwendig.Alles, was Sie wirklich tun müssen, ist kopieren Sie Ihre ServiceContract Schnittstelle und sagen Sie Ihrem code, wo Sie die Endpunkt für den service, und das ist es.Sie können Methoden aufrufen, die vom Dienst mit sehr wenig code.Mit dieser Methode haben Sie die vollständige Kontrolle über die Umsetzung.Unabhängig von der Methode, die Sie wählen, um zu generieren, eine proxy-Klasse, Michele zeigt die beiden und nutzt sowohl in Ihrem ausgezeichnete Reihe von webcasts zu diesem Thema.

Michele hat Tonnen von tollen material gibt, und ich empfehle Ihnen, check-out Ihre website(s).Hier sind einige links, die waren unglaublich hilfreich für mich, wie ich war, zu lernen WCF.Ich hoffe, dass Sie kommen werde, zu erkennen, wie stark WCF wirklich ist, und wie einfach es ist, es zu implementieren.Die Lernkurve ein wenig steiler, aber die Belohnungen für Ihre Zeit und Investitionen sind es Wert:

Ich empfehle, Sie sehen sich mindestens 1 von Michele webcasts.Sie ist eine sehr effektive presenter, und Sie ist offensichtlich unglaublich kompetent, wenn es um die WCF.Sie macht einen guten job zu entmystifizieren, die innere Funktionsweise von WCF aus dem Boden auf.

Andere Tipps

I ' m having a hardtime, um zu sehen, Wann sollte ich oder würde mit WCF.Warum?Weil ich die Produktivität und Einfachheit auf ganz oben auf meiner Liste.Warum war die ASMX-Modell so erfolgreich, weil Sie gearbeitet, und Sie bekommen es schnell zu arbeiten.Und mit VS 2005 und .NET 2.0 wsdl.exe war spuckte ziemlich nett und kompatible Dienste.

Im wirklichen Leben sollten Sie haben sehr wenig Kommunikation Protokolle, die in Ihrer Architektur.Dies macht es einfacher wartbar.Wenn Sie brauchen, um Zugang zu legacy-Systemen, schreiben, spezifischen Adapter für Sie, so können Sie spielen zusammen in der schönen glänzenden und schönen SOA-Welt.

WCF ist viel mächtiger als ASMX-und es reicht, es in mehrere Möglichkeiten.ASMX ist limitiert auf nur HTTP, während WCF verwenden können verschiedene Protokolle für die Kommunikation (zugegeben, HTTP ist immer noch so, wie die meisten Leute es verwenden werden, zumindest für die Dienste, die müssen interoperabel sein).WCF ist auch einfacher zu erweitern.Mindestens, es ist möglich zu erweitern, Sie in einer Weise, dass ASMX kann nicht verlängert werden."Einfach" kann das sein, stretching es.=)

Die zusätzlichen Funktionen angeboten, die von WCF überwiegt bei weitem die Komplexität fügt es, meiner Meinung nach.Ich habe auch das Gefühl, dass das Programmiermodell ist einfacher.DataContracts viel schöner sind, als das serialisieren von XML-Serialisierung mit öffentlichen Eigenschaften für alles, zum Beispiel.Es ist auch viel mehr deklarative Natur, das ist auch schön.

Warten....haben Sie jemals verwenden .NET Remoting, Ursache, das ist die Reale Sache, die seine ersetzen..NET Remoting ist ziemlich kompliziert, selbst.Ich finde WCF einfacher und besser ausgelegt.

Ich sehe es nicht oft genug erwähnen, aber Sie können noch relativ einfach umzusetzen services mit WCF, sehr ähnlich ASMX-Dienste.Zum Beispiel:

[ServiceContract]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class SimpleService
{
    [OperationContract]
    public string HelloWorld()
    {
        return "Hello World";
    }

}

Sie haben noch registrieren, das Ende Punkt in Ihrem web.config, aber das ist nicht so schlimm.

Die Beseitigung der Ausführlichkeit der getrennten Daten -, service-und operation-Verträge geht ein langer Weg in Richtung macht WCF mehr überschaubar für mich.

VS2008 enthält die "Add Service Reference" - Kontextmenü, das den proxy für Sie hinter die kulissen.

Wie bereits erwähnt, WCF ist nicht ausschließlich als Ersatz für die ASMX-web-service-Typen, sondern um eine konsistente, sichere und skalierbare Methode für alle, interoperable Dienste, sei es über HTTP, tcp, named pipes oder MSMQ Transport.

Ich gestehe, dass ich haben andere Probleme mit WCF (z.B.re-writing-Methode Signaturen wenn Sie einen Dienst über basicHTTP - siehe hier, aber insgesamt denke ich, dass es eine definitive imrovement

Wenn Sie mit VS2008 und erstellen einen WCF-Projekt, dann erhalten Sie automatisch eine Testumgebung, wenn Sie drücken Sie run/debug-und Sie können fügen Sie einen Verweis, ohne dass svcutil.

Meine ersten Gedanken WCF waren genau die gleichen!Hier sind einige Lösungen:

  1. Programmieren Sie Ihren eigenen proxy - /client-Schicht Nutzung von generics (siehe Klassen ClientBase, Bindung).Ich habe festgestellt, das leicht zu bekommen Arbeit, aber schwer zu perfektionieren.
  2. Dritte bei der Umsetzung von 1 (SoftwareIsHardwork ist mein Derzeitiger Favorit)

WCF ist ein Ersatz für alle früheren web-service Technologien von Microsoft.Es macht auch viel mehr als das, was traditionell als "web-services".

WCF "web services" sind Teil eines viel breiteren Spektrum von der remote-Kommunikation aktiviert, die über WCF.Sie erhalten ein viel höheres Maß an Flexibilität und Portabilität, die Dinge in WCF als mit herkömmlichen ASMX da WCF ausgelegt ist, von Grund auf, um zusammenzufassen, wie all die verschiedenen distributed programming-Infrastrukturen von Microsoft angeboten.Ein Endpunkt in WCF können kommuniziert werden ebenso leicht über SOAP/XML, wie es kann über TCP/binary und ändern dieses medium ist einfach eine Konfigurations-Datei mod.In der Theorie, dies reduziert die Menge der neue code, der benötigt wird, wenn portieren oder sich ändernde Geschäftsanforderungen, Ziele, etc.

ASMX is older than WCF, and anything ASMX can do so can WCF (and more).Grundsätzlich können Sie sehen, WCF, wie Sie versuchen, logisch zu gruppieren, all die verschiedenen Möglichkeiten zu bekommen, zwei apps zu kommunizieren, in die Microsoft-Welt;ASMX war nur einer von diesen vielen Möglichkeiten und so ist jetzt gruppiert nach den WCF-Dach-Fähigkeiten.

Web-Services zugegriffen werden kann, die nur über HTTP, und es arbeitet in zustandslosen Umgebung, wo WCF ist flexibel einsetzbar, da seine Dienste gehostet werden kann in verschiedenen Arten von Anwendungen.Häufige Szenarien für das hosten von WCF-services IIS,WAR, Self-hosting, Managed Windows Service.

Der wesentliche Unterschied ist, dass Web-Services Verwenden XmlSerializer.Aber WCF DataContractSerializer Verwendet, die ist besser in der Leistung als im Vergleich zu XmlSerializer.

In welchen Szenarien müssen WCF verwendet werden

  • Ein sicherer service, um geschäftliche Vorgänge zu verarbeiten.Ein service, der
  • liefert aktuelle Daten zu anderen, wie ein traffic-report oder eine andere
  • monitoring-service.Ein chat-service, der ermöglicht, dass zwei Menschen
  • kommunizieren oder in Echtzeit Daten austauschen.Eine dashboard-Anwendung
  • dass Umfragen einen oder mehrere services für Daten und präsentiert Sie in einer logischen
  • Präsentation.Das aussetzen einer workflow implementiert mithilfe der Windows-Workflow
  • Stiftung als WCF-Dienst.Eine Silverlight-Anwendung zu Umfrage ein
  • service für die neueste Daten-feeds.

Features von WCF

  • Service-Orientierung
  • Die Interoperabilität
  • Mehrere Message-Muster
  • Metadaten
  • Daten, Verträge
  • Sicherheit
  • Mehrfache Transporte und Codierungen
  • Zuverlässige und Nachrichten in der Warteschlange
  • Langlebig Nachrichten
  • Transaktionen
  • AJAX-und REST-Unterstützung
  • Erweiterbarkeit

Quelle: wichtigste Quelle für den text

MSDN?Ich in der Regel ziemlich gut mit der Bibliothek auf sich selbst, und ich in der Regel erwarten wertvolle Artikel.

In Bezug auf das, was es bietet, ich denke, die Antwort ist die Kompatibilität.Die ASMX-Dienste waren ziemlich Microsofty.Nicht zu sagen, dass Sie nicht versuchen werden, kompatibel mit anderen Verbrauchern;aber das Modell war nicht passen, vieles mehr ASP.NET web-Seiten und einige andere benutzerdefinierte Microsoft die Verbraucher.In der Erwägung, dass WCF, wegen seiner Architektur, ermöglicht Ihrem service sehr offen-standard-basierte Endpunkte, z.B.REST, JSON, etc.zusätzlich zu den üblichen SEIFE.Andere Menschen haben wahrscheinlich eine viel einfachere Zeit, verbrauchen Sie Ihre WCF-Dienst als Ihren ASMX ein.

(Dies ist alles im Grunde abgeleitet, von der vergleichenden MSDN zu Lesen, so dass jemand, der mehr weiß, sollte sich frei fühlen, mich zu korrigieren.)

WCF sollte nicht gedacht werden, als Ersatz für ASMX.Zu urteilen, wie es positioniert ist und wie es verwendet wird, die intern von Microsoft, es ist wirklich eine grundlegende Architektur Stück, das verwendet wird, für jede Art der grenzüberschreitenden Kommunikation.

Ich glaube, dass WCF wirklich Fortschritte ASMX-web-services-Implementierung in vielerlei Hinsicht.Erste von alle, es bietet eine sehr schöne geschichtete Objekt-Modell, das hilft zu verstecken die intrinsische Komplexität von verteilten Anwendungen.Zweitens können Sie mehr als request-replay-messaging-Muster, darunter asynchrone Benachrichtigungen vom server zum client (unmöglich mit reinem HTTP), und drittens Abstraktion, Weg der zugrunde liegenden Transportprotokoll von XML-messaging und so elegant Unterstützung für HTTP, HTTPS, TCP und andere.Abwärtskompatibilität mit "1-st generation" web-services, ist auch ein plus.WCF verwendet XML-standard, wie die der internen Darstellung.Dies könnte wahrgenommen werden, als Vorteil oder Nachteil, vor allem mit der wachsenden Popularität "Fett-freie alternativen zu XML" wie JSON.

Die schwierigen Dinge, die ich mit WCF ist das verwalten der Konfigurationen für die clients und-Servern, und die Fehlersuche, die nicht so schön fehlerhaften Zustand Ausnahmen.

Es wäre toll, wenn jemand noch keine shortcuts oder Tipps für die.

Ich finde, dass ist ein Schmerz;in den ich habe .NET an beiden enden, haben die gleiche "Vertrag" dlls geladen auf beiden enden etc.Aber dann muss ich die Sauerei mit viel details wie "KnownType" Attribute.

WCF auch standardmäßig nur lassen 1 oder 2 clients die Verbindung zu einem service, bis Sie Sie ändern viel Konfiguration.Ändern der Konfiguration von code ist nicht einfach, Versand-viele comfig Dateien ist keine option, da es zu schwer ist, verschmelzen unsere änderungen in änderungen eines Kunden gemacht haben, die bei einem upgrade (auch wir nicht wollen, dass die Kunden spielen mit WCF-Einstellungen!)

.NET remoting tendenziell nur arbeiten die meisten der Zeit.

Ich denke, Sie versuchen zu vorgeben das .NET .NET-Objekt-basierte Kommunikation ist der gleiche wie das senden-bit, so dass der Text (xml) auf einem unbekannten system, war ein Schritt zu weit.

(Die wenigen Male, die wir verwendet haben, WCF für die Kommunikation mit einem Java-system haben wir festgestellt, dass die XSD, die das java-system hat sich nicht mit dem übereinstimmen, was XML wollte Sie sowieso, also mussten hand-code-eine Menge von XML-Zuordnungen.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top