web-dev-qa-db-fra.com

Service Web vs service WCF

Quelle est la différence entre eux?

Quand devrais-je opter pour l'un sur l'autre?

108
Developer

Cette réponse est basée sur un article qui n'existe plus:

Résumé de l'article:

"Fondamentalement, WCF est une couche de service qui vous permet de créer des applications pouvant communiquer en utilisant divers mécanismes de communication. Elle vous permet également de communiquer à l'aide d'égal à égal, de canaux nommés, de services Web, etc.

Vous ne pouvez pas les comparer car WCF est un framework permettant de créer des applications interopérables. Si vous le souhaitez, vous pouvez considérer cela comme un SOA enabler. Qu'est-ce que cela signifie?

Eh bien, WCF est conforme à ce que l’on appelle ABC, où A est l’adresse du service avec lequel vous souhaitez communiquer, B représente la liaison et C le contrat. Ceci est important car il est possible de changer la liaison sans nécessairement changer le code. Le contrat est beaucoup plus puissant car il oblige la séparation du contrat de la mise en œuvre. Cela signifie que le contrat est défini dans une interface et qu'il existe une implémentation concrète à laquelle le consommateur est lié en utilisant la même idée du contrat. Le modèle de données est extrait. "

... plus tard ...

"nous devrions utiliser WCF lorsque nous devons communiquer avec d'autres technologies de communication (par exemple, peer-to-peer, canaux nommés) plutôt qu'avec le service Web"

63
nzpcmad

De Quelle est la différence entre WCF et Web Services?

WCF remplace toutes les technologies de service Web antérieures de Microsoft. Il fait également beaucoup plus que ce qui est traditionnellement considéré comme un "service Web".

Les "services Web" WCF font partie d'un spectre beaucoup plus large de communication à distance activé par le biais de WCF. Vous obtiendrez un degré de flexibilité et de portabilité beaucoup plus élevé dans l'utilisation de WCF qu'avec l'ASMX traditionnel, car WCF est conçu de manière à résumer toutes les infrastructures de programmation distribuée proposées par Microsoft. Un point de terminaison dans WCF peut être communiqué aussi facilement par SOAP/XML que par TCP/binaire et changer de support est simplement un fichier de configuration mod. En théorie, cela réduit la quantité de nouveau code nécessaire lors du transfert ou de la modification des besoins, des cibles, etc.

ASMX est plus ancien que WCF, et tout ce que peut faire ASMX peut le faire (et plus encore). En gros, vous pouvez voir que WCF essaie de regrouper logiquement toutes les différentes manières de faire communiquer deux applications dans le monde de Microsoft; ASMX n’était qu’un de ces nombreux moyens et est donc désormais regroupé dans le cadre des capacités de la WCF.

Les services Web ne sont accessibles que via HTTP. Il fonctionne dans un environnement sans état, où WCF est flexible car ses services peuvent être hébergés dans différents types d’applications. Les scénarios courants pour l'hébergement de services WCF sont IIS, WAS, Hébergement autonome, Service Windows géré.

La principale différence est que les services Web utilisent XmlSerializer. Mais WCF utilise DataContractSerializer qui a de meilleures performances que XmlSerializer.

31
Joe

Web Service est basé sur SOAP et renvoie les données au format XML. Il ne prend en charge que le protocole HTTP. Il n'est pas un logiciel open source, mais peut être utilisé par tout client comprenant XML. Il ne peut être hébergé que sur IIS.

WCF est également basé sur SOAP et renvoie des données au format XML. Il s'agit de l'évolution du service Web (ASMX) et prend en charge divers protocoles tels que TCP, HTTP, HTTPS, Named Pipes, MSMQ.Le principal problème de WCF est sa configuration fastidieuse et complexe. dans l'application ou sur IIS ou en utilisant le service de fenêtre.

29
CSK

La différence principale et fondamentale est que le service Web ASP.NET est conçu pour échanger des messages SOAP sur HTTP uniquement, tandis que le service WCF peut échanger des messages en utilisant n’importe quel format (SOAP est la valeur par défaut)), quel que soit le protocole de transport, TCP, MSMQ ou NamedPipes etc.

16
Imran Ghani

Quelle est la différence entre le service Web et WCF?

  1. Le service Web utilise uniquement le protocole HTTP lors du transfert de données d'une application à une autre.

    Mais WCF prend en charge davantage de protocoles de transport de messages que les services Web ASP.NET. WCF prend en charge l'envoi de messages à l'aide de HTTP, ainsi que du protocole TCP (Transmission Control Protocol), des canaux nommés et de Microsoft Message Queuing (MSMQ).

  2. Pour développer un service Web Service, nous écrirons le code suivant

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

    Pour développer un service en WCF, nous écrirons le code suivant

    [ServiceContract]
    public interface ITest
    {
      [OperationContract]
      string ShowMessage(string strMsg);
    }
    public class Service : ITest
    {
      public string ShowMessage(string strMsg)
      {
         return strMsg;
      }
    }
    
  3. Le service Web n'est pas plus robuste sur le plan architectural. Mais WCF est plus robuste sur le plan architectural et promeut les meilleures pratiques.

  4. Les services Web utilisent XmlSerializer mais WCF utilise DataContractSerializer. Quel est le meilleur en termes de performances par rapport à XmlSerializer?

  5. Pour les appels de service à service internes (derrière un pare-feu), nous utilisons la liaison net: tcp, qui est beaucoup plus rapide que SOAP.

    WCF est 25%, 50% plus rapide que les services Web ASP.NET et environ 25% plus rapide que .NET Remoting.

Quand devrais-je opter pour l'un sur l'autre?

  • WCF est utilisé pour communiquer entre d'autres applications développées sur d'autres plateformes et utilisant d'autres technologies.

    Par exemple, si je dois transférer des données de la plate-forme .net vers une autre application exécutée sur un autre système d'exploitation (comme Unix ou Linux) et qu'ils utilisent un autre protocole de transfert (comme WAS ou TCP), il est alors uniquement possible de transférer des données. en utilisant WCF.

  • Il n'y a aucune restriction de plate-forme, protocole de transfert d'application lors du transfert des données d'une application à une autre application.

  • La sécurité est très élevée par rapport au service Web

4
Ali Azam

La principale différence est le délai d'expiration, le service WCF a expiré lorsqu'il n'y a pas de réponse, mais le service Web ne possède pas cette propriété.

2
user5898334