web-dev-qa-db-fra.com

Quelles sont les différences entre les services Web WCF et ASMX?

Je suis totalement confus entre les services Web WCF et ASMX. Auparavant, j’avais utilisé de nombreux services Web et voici qu’un nouveau produit, appelé WCF, a été introduit. Je peux toujours créer un WCF fonctionnant comme un service Web. Je pense qu'il y aura plus de choses dans la WCF.

Quelles sont les différences entre WCF et les services Web? Quand faut-il utiliser chacun?

371
shailesh

Keith Elder compare bien ASMX à WCF ici. Vérifiez-le.

Une autre comparaison entre ASMX et WCF peut être trouvée ici - Je ne suis pas totalement d'accord avec tous les points qui y figurent, mais cela pourrait vous donner une idée.

WCF est fondamentalement "ASMX sur Stereoids" - il peut être tout ce que ASMX pourrait - plus beaucoup plus! .

ASMX est:

  • facile et simple à écrire et à configurer
  • uniquement disponible dans IIS
  • uniquement appelable depuis HTTP

WCF peut être:

  • hébergé dans IIS, un service Windows, une application Winforms, une application console - vous avez une liberté totale
  • utilisé avec HTTP (REST et SOAP), TCP/IP, MSMQ et de nombreux autres protocoles

En bref: WCF est là pour remplacer complètement ASMX.

Découvrez le Centre de développement WCF sur MSDN .

Mise à jour: le lien semble être mort - essayez ceci: Qu'est-ce que Windows Communication Foundation?

388
marc_s

Les services Web ASMX ne peuvent être appelés que par HTTP (service Web traditionnel avec .asmx). Alors que WCF Service ou un composant WCF peut être appelé par n’importe quel protocole (tel que http, tcp, etc.) et n’importe quel type de transport.

Deuxièmement, les services Web ASMX ne sont pas flexibles. Cependant, les services WCF sont flexibles. Si vous créez une nouvelle version du service, vous devez simplement exposer une nouvelle fin. Par conséquent, les services sont agiles et constituent une approche très pratique pour analyser les tendances commerciales actuelles.

Nous développons WCF en tant que contrats, interfaces, opérations et contrats de données. En tant que développeur, nous nous concentrons davantage sur les services de logique métier et ne nous inquiétons pas de la pile de canaux. WCF est une API de programmation unifiée pour tout type de services. Nous créons donc le service et utilisons les informations de configuration pour configurer le mécanisme de communication tel que HTTP/TCP/MSMQ, etc.

37
NET Experts

C'est une très vieille question, mais je ne pense pas que les avantages d'ASMX ont été décrits de manière fidèle. Bien que peu flexibles, les services Web ASMX sont très simples à utiliser et à comprendre. Alors que WCF est plus flexible, il est également plus complexe de se lever et de configurer.

Les services Web ASMX sont prêts à fonctionner et à être ajoutés en tant que référence de service Web dès que vous ajoutez le fichier. (en supposant que votre projet se construit)

Pour le simple processus de développement de create webservice -> run webservice -> add webservice reference, un service Web ASMX a très peu de problèmes, mais pas beaucoup de problèmes de configuration, et c’est sa force.

En réponse à ceux qui affirment que WCF remplace ASMX, je répondrais que WCF aurait besoin d'ajouter un K.I.S.S. simplifié. mode de configuration afin de remplacer complètement ASMX.

Exemple web.config pour un service Web ASMX:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings />
  <system.web>
    <compilation targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
  </system.web>
</configuration>
24
Andrew Hoffman

WCF remplace complètement les services Web ASMX. ASMX est l'ancienne méthode de services Web et WCF, la méthode actuelle de services Web. Tout nouveau développement de service Web SOAP, sur le client ou le serveur, doit être effectué à l'aide de WCF.

11
John Saunders

Il y a beaucoup de discussions en cours sur la simplicité des services Web asmx via WCF. Permettez-moi de clarifier quelques points ici.

  • Il est vrai que les développeurs de services Web novices se lanceront facilement dans les services Web asmx. Visual Studio fait tout le travail pour eux et crée facilement un projet Hello World.
  • Mais si vous pouvez apprendre la WCF (ce qui ne prendra pas beaucoup de temps, bien sûr), vous pourrez alors voir que la WCF est également assez simple et que vous pouvez aller de l'avant facilement.
  • Il est important de se rappeler que ces complexités de la WCF sont en réalité attribuées à la beauté de ses fonctionnalités. Il existe des adresses, des liaisons, des contrats et des noeuds finaux, des services et des clients mentionnés dans le fichier de configuration. La beauté est votre logique métier est séparée et maintenue en toute sécurité. Demain, si vous devez modifier la liaison de basicHttpBinding à netTcpBinding, vous pouvez facilement créer une liaison dans un fichier de configuration et l'utiliser. Ainsi, tous les changements liés aux clients, aux canaux de communication, aux liaisons, etc. doivent être effectués dans la configuration, en laissant la logique métier sûre et intacte, ce qui est tout à fait logique.
  • 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.
  • 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. Vous pouvez héberger vos services WCF dans la console, les services Windows, IIS & WAS, deux méthodes différentes pour créer de nouveaux projets dans Visual Studio.
  • 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.
  • Vous aimerez toujours utiliser Visual Studio pour NET 4.0 ou 4.5 car cela simplifie la vie tout en créant des services WCF.
  • La principale différence est que les services Web utilisent XmlSerializer. Mais WCF utilise DataContractSerializer, qui offre de meilleures performances que XmlSerializer. C’est pourquoi WCF fonctionne bien mieux que d’autres logiciels de communication tels que asmx, .NET Remoting, etc.

N'oublions pas que j'étais l'un de ceux qui aimaient davantage les services asmx que la WCF, mais à cette époque, je ne connaissais pas bien les services et leurs capacités. J'avais peur des configurations WCF. Mais j’ai osé et essayé d’écrire quelques services de la WCF, et quand j’en ai appris davantage sur la WCF, je n’ai plus aucune inhibition à l’égard de la WCF et je les recommande à tout le monde. Bonne codage !!!

6
Sagnik Majumder