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

Je suis totalement confondu entre les services Web WCF et ASMX. J’ai utilisé beaucoup de services Web à un stade antérieur, et il y a maintenant cette nouvelle chose appelée WCF. Je peux toujours créer WCF qui fonctionne comme un service Web. Je pense qu’il y aura plus de choses dans WCF.

Quelles sont les différences entre WCF et les services Web? Quand chacun devrait-il être utilisé?

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 100% d’accord avec tous les points, mais cela pourrait vous donner une idée.

WCF est fondamentalement “ASMX on stereoids” – il peut s’agir de tout ce que ASMX pourrait faire – et bien plus encore! .

ASMX est:

  • facile et simple à écrire et à configurer
  • disponible uniquement 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 beaucoup d’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?

Les services Web ASMX ne peuvent être appelés que par HTTP (Webservice traditionnel avec .asmx). Bien que le service WCF ou un composant WCF puisse être appelé par n’importe quel protocole (comme http, tcp, etc.) et tout 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 extrémité. Par conséquent, les services sont agiles et constituent une approche très pratique pour examiner 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 nous n’avons pas à nous soucier de la stack de canaux. WCF est une API de programmation unifiée pour tout type de service. Nous créons donc le service et utilisons les informations de configuration pour configurer le mécanisme de communication comme HTTP / TCP / MSMQ, etc.

C’est une question très ancienne, mais je ne pense pas que les avantages d’ASMX ont été décrits de manière équitable. Bien qu’ils ne soient pas très 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 positionner et de configurer.

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

Pour le workflow de développement simple de create webservice -> run webservice -> add webservice reference , un webservice ASMX a très peu de choses qui peuvent mal tourner, pas grand-chose que vous pouvez mal configurer, et c’est la force.

En réponse à ceux qui affirment que WCF remplace ASMX, je répondrais que WCF devrait append un mode de configuration KISS rationalisé afin de remplacer complètement ASMX.

Exemple web.config pour un service web ASMX:

         

WCF remplace complètement les services Web ASMX. ASMX est l’ancienne façon de faire des services Web et WCF est le moyen actuel de faire des services Web. Tout nouveau développement de service Web SOAP, sur le client ou le serveur, doit être effectué en utilisant WCF.

Il y a beaucoup de discussions sur la simplicité des services Web asmx sur 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 (qui, bien sûr, ne prendra pas beaucoup de temps), vous pourrez voir que WCF est également très simple et que vous pouvez aller de l’avant facilement.
  • Il est important de se rappeler que ces complexités dans WCF sont en réalité atsortingbuées aux belles caractéristiques qu’elle apporte. Il existe des adresses, des liaisons, des contrats et des points de terminaison, des services et des clients, tous mentionnés dans le fichier de configuration. La beauté est que 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 le fichier de configuration et l’utiliser. Ainsi, toutes les modifications liées aux clients, aux canaux de communication, aux liaisons, etc. doivent être effectuées dans la configuration, laissant la logique métier sûre et intacte, ce qui est très utile.
  • Les “services Web” WCF font partie d’un spectre beaucoup plus large de communication à distance activé via WCF. Vous obtiendrez un degré de flexibilité et de portabilité beaucoup plus élevé dans WCF que dans ASMX traditionnel, car WCF est conçu, de toutes pièces, pour résumer toutes les différentes infrastructures de programmation dissortingbuées offertes par Microsoft. Un sharepoint terminaison dans WCF peut être communiqué avec SOAP / XML aussi facilement que possible avec TCP / binary et changer ce support est simplement un mod de fichier de configuration. En théorie, cela réduit la quantité de nouveau code nécessaire lors du transfert ou de la modification des besoins, objectives, etc. de l’entreprise.
  • Les services Web sont uniquement accessibles via HTTP et fonctionnent dans un environnement sans état, WCF étant flexible car ses services peuvent être hébergés dans différents types d’applications. Vous pouvez héberger vos services WCF dans Console, Windows Services, IIS et WAS, qui sont à nouveau différents moyens de créer de nouveaux projets dans Visual Studio.
  • ASMX est plus ancien que WCF, et tout ce que ASMX peut faire, c’est WCF (et plus encore). Fondamentalement, 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 que l’une de ces nombreuses façons et est désormais regroupé sous le parapluie WCF.
  • Vous aimerez toujours utiliser Visual Studio pour NET 4.0 ou 4.5 car cela facilite la vie lors de la création de services WCF.
  • La principale différence est que les services Web utilisent XmlSerializer. Mais WCF utilise DataContractSerializer, qui est meilleur dans les performances que XmlSerializer. C’est pourquoi WCF est bien meilleur que les autres technologies de communication de .NET comme asmx, .NET Remoting, etc.

Sans oublier que j’étais l’un de ceux qui aimaient plus les services asmx que WCF, mais cette fois-ci, je ne connaissais pas bien les services de la WCF et ses capacités. J’avais peur des configurations WCF. Mais j’ai osé et j’ai essayé d’écrire peu de services de la WCF, et quand j’ai appris plus de WCF, maintenant je n’ai aucune inhibition à propos de WCF et je les recommande à tout le monde. Heureux codage !!!