Service Web vs service WCF

Réponses:

67

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 qui peuvent communiquer à l'aide de divers mécanismes de communication. Avec lui, vous pouvez communiquer en utilisant Peer to Peer, les canaux nommés, les services Web, etc.

Vous ne pouvez pas les comparer car WCF est un framework pour créer des applications interopérables. Si vous le souhaitez, vous pouvez le considérer comme un facilitateur SOA. Qu'est-ce que ça veut dire?

Eh bien, WCF est conforme à quelque chose appelé ABC, où A est l'adresse du service avec lequel vous souhaitez communiquer, B représente la liaison et C représente le contrat. Ceci est important car il est possible de modifier la liaison sans nécessairement changer le code. Le contrat est beaucoup plus puissant car il force 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 ...

"devrait utiliser WCF lorsque nous avons besoin de communiquer avec d'autres technologies de communication (par exemple. Peer to Peer, Named Pipes) plutôt qu'avec un service Web"

rbrayb
la source
2
Pour tout nouveau projet basé sur une approche SOA, le développeur doit sélectionner WCF sur les services Web. Parce qu'il donne la flexibilité et l'évolutivité pour une utilisation future. Il n'y a qu'une seule exception: si le client ne prend pas en charge la communication avec les services wcf, c'est-à-dire Flash AS2.
Lalit
WCF 1) Il s'agit d'une architecture multicouche 2) Il fournit une plate-forme ou un cadre unifié unique (interopérable) pour créer une application orientée service pour communiquer en utilisant une variété de protocoles réseau. 3) WCF offre une meilleure sécurité et fiabilité par rapport aux services Web ou aux services ASMX 4) Prise en charge des services Web XML, Ajax et REST 1) C'est simple 2) Ecrivez une fonction et accrochez-la avec l'attribut [WebMethod] et c'est prêt à rendre service
Arun Banik
Comme répondu par Joe -> L'article est répliqué sur codeproject.com/Articles/139787/…
Bernhard
33

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

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 des «services Web».

Les «services Web» WCF font partie d'un éventail beaucoup plus large de communications à distance activées via WCF. Vous obtiendrez un degré beaucoup plus élevé de flexibilité et de portabilité en faisant les choses dans WCF qu'avec ASMX traditionnel, car WCF est conçu, dès le départ, pour résumer toutes les différentes infrastructures de programmation distribuées offertes par Microsoft. Un point de terminaison dans WCF peut être communiqué aussi facilement via SOAP / XML que via TCP / binaire et changer ce support est simplement un fichier de configuration mod. En théorie, cela réduit la quantité de nouveau code nécessaire lors du portage ou de la modification des besoins, des cibles, etc.

ASMX est plus ancien que WCF, et tout ce que ASMX peut faire peut également WCF (et plus). Fondamentalement, vous pouvez voir WCF comme une tentative de regrouper logiquement toutes les différentes façons de faire communiquer deux applications dans le monde de Microsoft; ASMX n'était que l'un de ces nombreux moyens et est donc maintenant regroupé sous le parapluie de capacités WCF.

Les services Web ne sont accessibles que via HTTP et fonctionnent 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, auto-hébergement, service Windows géré.

La principale différence réside dans l'utilisation des services Web XmlSerializer. Mais WCF utilise DataContractSerializerce qui est meilleur en performance par rapport à XmlSerializer.

Joe
la source
2
Note aléatoire: une grande différence entre DataContractSerializer et XmlSerializer est que DCS nécessite une commande de champ - c'est pourquoi je n'utilise pas DCS pour la sérialisation ou les contrats non transitoires! Ainsi, il est possible d'interrompre un service utilisé par des clients n'utilisant pas la commande fixe lors du passage à DCS (ou du passage à DCS mais dans un ordre différent de celui utilisé précédemment). Certes, cela devrait être exprimé dans le schéma, mais ..
user2246674
1
En outre, s'il vous plaît citer / sources de lien et indiquer les extraits et / ou de prendre quelque chose de l' information et de l' écriture originale nouvelle avec elle. C'est impoli de voler. J'ai ajouté le lien pour vous, mais assurez-vous de donner le crédit là où il est dû! (Je voterais contre sur cette base, si je pouvais voter contre du tout.)
user2246674
32

Service Web est basé sur SOAP et renvoie des données au format XML. Il ne prend en charge que le protocole HTTP. Il n'est pas open source mais peut être utilisé par n'importe quel client qui comprend xml. Il ne peut être hébergé que sur IIS.

WCF est également basé sur SOAP et renvoie des données au format XML. C'est l'évolution du service web (ASMX) et prend en charge divers protocoles comme TCP, HTTP, HTTPS, Named Pipes, MSMQ. Le principal problème avec WCF est sa configuration fastidieuse et étendue. Il n'est pas open source mais peut être utilisé par n'importe quel client qui comprend xml. Il peut être hébergé dans l'applicaion ou sur IIS ou en utilisant le service Windows.

CSK
la source
WCF peut également recevoir / envoyer des requêtes / réponses http au format JSON, et sans utiliser SOAP / schemas (de nos jours?).
Efrain
Point de détail: SOAP prend en charge HTTPS. L'encodage se produit au niveau de la couche de transport, de sorte que le client y est indépendant - le client fait des requêtes XML et obtient des réponses XML, et il ne sait ni ne se soucie de savoir si en cours de route il était plain-ol-http ou encrypted-https.
Jinlye
16

La différence fondamentale et principale 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 par défaut) sur n'importe quel protocole de transport, à savoir HTTP, TCP, MSMQ ou NamedPipes, etc.

Imran Ghani
la source
4

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 application.

    Mais WCF prend en charge plus de protocoles pour le 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 en 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 dans 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. Quelle est la meilleure performance par rapport à XmlSerializer?

  5. Pour les appels de service à service internes (derrière le 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 plutôt que pour l'autre?

  • WCF est utilisé pour communiquer entre d'autres applications qui ont été développées sur d'autres plates-formes et en utilisant d'autres technologies.

    Par exemple, si je dois transférer des données de la plate-forme .net vers une autre application qui fonctionne 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 uniquement possible de transférer des données en utilisant WCF.

  • Il n'y a pas de restriction de plate-forme, de protocole de transfert d'application tout en transférant les données d'une application à une autre application.

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

Ali Azam
la source
2

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 n'a pas cette propriété.

user5898334
la source