Quelle est la différence entre eux?
Quand devrais-je opter pour l'un plutôt que pour l'autre?
Quelle est la différence entre eux?
Quand devrais-je opter pour l'un plutôt que pour l'autre?
Réponses:
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"
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 utiliseDataContractSerializer
ce qui est meilleur en performance par rapport àXmlSerializer
.
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.
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.
Quelle est la différence entre le service Web et WCF?
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).
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;
}
}
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.
Les services Web utilisent XmlSerializer mais WCF utilise DataContractSerializer. Quelle est la meilleure performance par rapport à XmlSerializer?
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
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é.