Web Service vs WCF Service

110

Was ist der Unterschied zwischen ihnen?

Wann würde ich mich für einen über den anderen entscheiden?

Entwickler
quelle
Schauen Sie sich die andere Diskussion hier für weitere Informationen an ... stackoverflow.com/questions/50114/…
Kwal

Antworten:

67

Diese Antwort basiert auf einem Artikel, der nicht mehr existiert:

Zusammenfassung des Artikels:

"Grundsätzlich ist WCF eine Service-Schicht, mit der Sie Anwendungen erstellen können, die über eine Vielzahl von Kommunikationsmechanismen kommunizieren können. Mit ihr können Sie über Peer-to-Peer, Named Pipes, Webdienste usw. kommunizieren.

Sie können sie nicht vergleichen, da WCF ein Framework zum Erstellen interoperabler Anwendungen ist. Wenn Sie möchten, können Sie sich das als SOA-Enabler vorstellen. Was bedeutet das?

Nun, WCF entspricht etwas, das als ABC bekannt ist, wobei A die Adresse des Dienstes ist, mit dem Sie kommunizieren möchten, B für die Bindung steht und C für den Vertrag steht. Dies ist wichtig, da es möglich ist, die Bindung zu ändern, ohne den Code unbedingt zu ändern. Der Vertrag ist viel leistungsfähiger, weil er die Trennung des Vertrags von der Implementierung erzwingt. Dies bedeutet, dass der Vertrag in einer Schnittstelle definiert ist und es eine konkrete Implementierung gibt, an die der Verbraucher mit der gleichen Idee des Vertrags gebunden ist. Das Datenmodell wird abstrahiert. "

... später ...

"sollte WCF verwenden, wenn wir mit anderen Kommunikationstechnologien (z. B. Peer-to-Peer, Named Pipes) anstatt mit dem Webdienst kommunizieren müssen"

rbrayb
quelle
2
Für jedes neue Projekt, das auf dem SOA-Ansatz basiert, sollte der Entwickler WCF anstelle von Webservices auswählen. Weil es die Flexibilität und Skalierbarkeit für die zukünftige Verwendung bietet. Es gibt nur eine Ausnahme: Wenn der Client die Kommunikation mit wcf-Diensten, z. B. Flash AS2, nicht unterstützt.
Lalit
WCF 1) Es handelt sich um eine mehrschichtige Architektur. 2) Sie bietet eine einzige einheitliche Plattform (interoperabel) oder ein Framework zum Erstellen einer serviceorientierten Anwendung für die Kommunikation mit einer Vielzahl von Netzwerkprotokollen. 3) WCF bietet im Vergleich zu Webdiensten oder ASMX-Diensten eine bessere Sicherheit und Zuverlässigkeit. 4) Unterstützung für einfachen XML-, Ajax- und REST-Webdienst. 1) Es ist einfach. 2) Schreiben Sie eine Funktion und verknüpfen Sie sie mit dem Attribut [WebMethod] bereit zu dienen
Arun Banik
Wie von Joe beantwortet -> Der Artikel wird auf codeproject.com/Articles/139787/…
Bernhard
33

Von Was ist der Unterschied zwischen WCF und Web Services?

WCF ist ein Ersatz für alle früheren Webdiensttechnologien von Microsoft. Es macht auch viel mehr als das, was traditionell als "Webdienste" angesehen wird.

WCF- "Webdienste" sind Teil eines viel breiteren Spektrums der Fernkommunikation, die über WCF ermöglicht wird. In WCF erhalten Sie ein viel höheres Maß an Flexibilität und Portabilität als bei herkömmlichem ASMX, da WCF von Grund auf so konzipiert ist, dass alle von Microsoft angebotenen verteilten Programmierinfrastrukturen zusammengefasst werden. Ein Endpunkt in WCF kann über SOAP / XML genauso einfach kommuniziert werden wie über TCP / Binär. Das Ändern dieses Mediums ist einfach ein Mod für die Konfigurationsdatei. Theoretisch reduziert dies die Menge an neuem Code, die beim Portieren oder Ändern von Geschäftsanforderungen, Zielen usw. benötigt wird.

ASMX ist älter als WCF, und alles, was ASMX kann, kann WCF (und mehr). Grundsätzlich kann man WCF als Versuch ansehen, die verschiedenen Möglichkeiten, zwei Apps in der Welt von Microsoft zur Kommunikation zu bringen, logisch zusammenzufassen. ASMX war nur eine dieser vielen Möglichkeiten und wird daher jetzt unter dem Dach der WCF zusammengefasst.

Auf Webdienste kann nur über HTTP zugegriffen werden, und es funktioniert in einer zustandslosen Umgebung, in der WCF flexibel ist, da seine Dienste in verschiedenen Arten von Anwendungen gehostet werden können. Häufige Szenarien für das Hosten von WCF-Diensten sind IIS, WAS, Selbsthosting und verwalteter Windows-Dienst.

Der Hauptunterschied besteht darin, dass Webdienste verwendet werden XmlSerializer. Aber WCF verwendet, DataContractSerializerwas im Vergleich zu in der Leistung besser ist XmlSerializer.

Joe
quelle
2
Zufälliger Hinweis: Ein großer Unterschied zwischen DataContractSerializer und XmlSerializer besteht darin, dass für DCS eine Feldreihenfolge erforderlich ist. Deshalb verwende ich DCS nicht für nicht vorübergehende Serialisierungen oder Verträge! Auf diese Weise ist es möglich, einen Dienst zu unterbrechen, der von Clients verwendet wird, die beim Wechsel zu DCS nicht die feste Reihenfolge verwenden (oder zu DCS wechseln, jedoch in einer anderen Reihenfolge als zuvor). Zugegeben, dies sollte im Schema ausgedrückt werden, aber ..
user2246674
1
Auch bitte zitieren / link Quellen und zeigen Extrakte und / oder nehmen Sie die ursprünglichen Informationen und schreiben etwas Neues mit ihm. Es ist unhöflich zu stehlen. Ich habe den Link für Sie hinzugefügt, aber stellen Sie sicher, dass Sie die Gutschrift dort geben, wo sie fällig ist! (Ich würde auf dieser Basis abstimmen, wenn ich überhaupt abstimmen könnte.)
user2246674
32

Der Webdienst basiert auf SOAP und gibt Daten in XML-Form zurück. Es wird nur das HTTP-Protokoll unterstützt. Es ist kein Open Source, kann aber von jedem Client verwendet werden, der XML versteht. Es kann nur auf IIS gehostet werden.

WCF basiert auch auf SOAP und gibt Daten in XML-Form zurück. Es ist die Weiterentwicklung des Webdienstes (ASMX) und unterstützt verschiedene Protokolle wie TCP, HTTP, HTTPS, Named Pipes und MSMQ. Das Hauptproblem bei WCF ist die langwierige und umfangreiche Konfiguration. Es ist kein Open Source, kann aber von jedem Client verwendet werden, der XML versteht. Es kann mit in der Anwendung oder auf IIS oder mithilfe des Fensterservices gehostet werden.

CSK
quelle
WCF kann auch http-Anfragen / Antworten im JSON-Format empfangen / senden und ohne Verwendung von SOAP / Schemas (heutzutage?).
Efrain
Detail: SOAP unterstützt HTTPS. Die Codierung erfolgt auf der Transportebene, daher ist der Client unabhängig davon - der Client stellt XML-Anforderungen und erhält XML-Antworten, und er weiß und kümmert sich nicht darum, ob es sich auf dem Weg um einfaches HTTP oder verschlüsseltes https handelt.
Jinlye
16

Der grundlegende und primäre Unterschied besteht darin, dass der ASP.NET-Webdienst nur SOAP-Nachrichten über HTTP austauschen kann, während der WCF-Dienst Nachrichten in einem beliebigen Format (SOAP ist Standard) über ein beliebiges Transportprotokoll austauschen kann, z. B. HTTP, TCP, MSMQ oder NamedPipes usw.

Imran Ghani
quelle
4

Was ist der Unterschied zwischen Webdienst und WCF?

  1. Der Webdienst verwendet nur das HTTP-Protokoll, während Daten von einer Anwendung zu einer anderen Anwendung übertragen werden.

    WCF unterstützt jedoch mehr Protokolle für den Nachrichtentransport als ASP.NET-Webdienste. WCF unterstützt das Senden von Nachrichten über HTTP sowie das Transmission Control Protocol (TCP), Named Pipes und Microsoft Message Queuing (MSMQ).

  2. Um einen Dienst in Web Service zu entwickeln, schreiben wir den folgenden Code

    [WebService]
    public class Service : System.Web.Services.WebService
    {
      [WebMethod]
      public string Test(string strMsg)
      {
        return strMsg;
      }
    }

    Um einen Dienst in WCF zu entwickeln, schreiben wir den folgenden Code

    [ServiceContract]
    public interface ITest
    {
      [OperationContract]
      string ShowMessage(string strMsg);
    }
    public class Service : ITest
    {
      public string ShowMessage(string strMsg)
      {
         return strMsg;
      }
    }
  3. Der Webdienst ist architektonisch nicht robuster. WCF ist jedoch architektonisch robuster und fördert Best Practices.

  4. Webdienste verwenden XmlSerializer, WCF verwendet jedoch DataContractSerializer. Welche Leistung ist im Vergleich zu XmlSerializer besser?

  5. Für interne Service-to-Service-Aufrufe (hinter der Firewall) verwenden wir die net: tcp-Bindung, die viel schneller als SOAP ist.

    WCF ist 25% - 50% schneller als ASP.NET Web Services und ungefähr 25% schneller als .NET Remoting.

Wann würde ich mich für einen über den anderen entscheiden?

  • WCF wird verwendet, um zwischen anderen Anwendungen, die auf anderen Plattformen entwickelt wurden, und unter Verwendung anderer Technologien zu kommunizieren.

    Wenn ich beispielsweise Daten von der .net-Plattform auf eine andere Anwendung übertragen muss, die auf einem anderen Betriebssystem (wie Unix oder Linux) ausgeführt wird und ein anderes Übertragungsprotokoll (wie WAS oder TCP) verwendet, ist es nur möglich, Daten zu übertragen mit WCF.

  • Hier gibt es keine Einschränkung der Plattform, des Übertragungsprotokolls der Anwendung beim Übertragen der Daten zwischen einer Anwendung und einer anderen Anwendung.

  • Die Sicherheit ist im Vergleich zum Webdienst sehr hoch

Ali Azam
quelle
2

Der Hauptunterschied besteht in der Zeitüberschreitung. Der WCF-Dienst hat eine Zeitüberschreitung, wenn keine Antwort erfolgt, der Webdienst verfügt jedoch nicht über diese Eigenschaft.

user5898334
quelle