385 votes

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

Je suis totalement confus entre les services web WCF et ASMX. J'ai utilisé beaucoup de services web dans ma phase antérieure, et maintenant il y a cette nouvelle chose introduite 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 faut-il utiliser l'un et l'autre ?

402voto

marc_s Points 321990

Keith Elder compare joliment ASMX vers WCF ici. Regardez ça.

Une autre comparaison d'ASMX et WCF peut être trouvé ici - Je ne suis pas entièrement d'accord avec tous les points évoqués, mais cela peut vous donner une idée.

WCF est fondamentalement "ASMX sur les stéréoïdes" - il peut être tout que ASMX pourrait - plus et bien plus encore ! .

ASMX est :

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

WCF peut l'ê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.

Consultez le Centre des développeurs WCF sur MSDN .

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

35voto

NET Experts Points 1598

Les services Web ASMX ne peuvent être invoqués que par HTTP (service Web traditionnel avec .asmx). Tandis que le service de WCF ou un composant de WCF peut être invoqué par n'importe quel protocole (comme 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 faites une nouvelle version du service alors vous devez juste exposer une nouvelle extrémité. Par conséquent, les services sont agiles, ce qui est une approche très pratique au regard des tendances commerciales actuelles.

Nous développons WCF en tant que contrats, interface, opérations, et contrats de données. En tant que développeur, nous nous concentrons davantage sur les services de logique commerciale et nous n'avons pas besoin de nous soucier 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 mettre en place le mécanisme de communication comme HTTP/TCP/MSMQ, etc.

10voto

John Saunders Points 118808

WCF remplace complètement les services web ASMX. ASMX est l'ancienne façon de faire des services web et WCF est la façon actuelle de faire des services web. Tout nouveau développement de service web SOAP, sur le client ou le serveur, devrait être fait en utilisant WCF.

7voto

Sagnik Majumder Points 81

Il y a beaucoup de discussions en cours concernant la simplicité des services web asmx par rapport à WCF. Laissez-moi 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 WCF (ce qui, bien sûr, ne prendra pas beaucoup de temps), alors vous pouvez voir que WCF est également assez simple, et vous pouvez aller de l'avant facilement.
  • Il est important de se rappeler que ces dites complexités dans WCF sont en fait attribuées aux belles caractéristiques qu'il apporte avec lui. Il y a l'adressage, les liaisons, les contrats et les points de terminaison, les services et les clients, tous mentionnés dans le fichier de configuration. La beauté de la chose est que votre logique commerciale est séparée et maintenue en sécurité. Demain, si vous avez besoin de changer la liaison de basicHttpBinding a netTcpBinding vous pouvez facilement créer une liaison dans le 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 commerciale 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 WCF. Vous obtiendrez un degré de flexibilité et de portabilité beaucoup plus élevé en faisant des choses dans WCF qu'à travers l'ASMX traditionnel parce que WCF est conçu, à partir de la base, pour résumer toutes les différentes infrastructures de programmation distribuées offertes par Microsoft. On peut communiquer avec un point d'extrémité dans WCF tout aussi facilement par SOAP/XML que par TCP/binaire et pour changer ce support, il suffit de modifier un fichier de configuration. En théorie, cela réduit la quantité de nouveau code nécessaire lors du portage ou de la modification des besoins commerciaux, des cibles, etc.
  • Les services Web peuvent être accédés seulement sur HTTP et il fonctionne dans l'environnement sans état, où WCF est flexible parce que ses services peuvent être accueillis dans différents types d'applications. Vous pouvez héberger vos services WCF dans Console, Windows Services, IIS & WAS, qui sont encore différentes manières de créer de nouveaux projets dans Visual Studio.
  • ASMX est plus ancien que WCF, et tout ce que ASMX peut faire, WCF le peut aussi (et plus). Fondamentalement, vous pouvez voir WCF comme essayant de regrouper logiquement toutes les différentes manières d'obtenir deux applications pour communiquer dans le monde de Microsoft ; ASMX était juste une de ces nombreuses manières et ainsi est maintenant groupé sous le parapluie WCF des capacités.
  • Vous aimerez toujours utiliser Visual Studio for NET 4.0 ou 4.5 car il facilite 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 l'exécution comparée à XmlSerializer. C'est pourquoi WCF exécute la voie meilleure que d'autres contreparties de technologie de communication de .NET comme asmx, remoting de .NET etc.

Il ne faut pas oublier que j'étais l'un de ces types qui préféraient les services asmx à WCF, mais à l'époque, je n'étais pas très au courant des services WCF et de leurs capacités. J'étais effrayé par les configurations WCF. Mais j'ai osé et j'ai essayé d'écrire quelques services WCF de mon propre chef, et quand j'ai appris plus de WCF, maintenant je n'ai aucune inhibition sur WCF et je les recommande à tout le monde. Bon codage ! !!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X