2012-10-27 3 views
1

Il y a quelque temps, il y a environ 2 ans, je travaillais sur un portail web développé en .NET 2.0. et avait beaucoup de pages asmx. L'autre jour, un de mes collègues qui était plus expérimenté à ASP .NET a déclaré: "ASMX est vieux et moche, nous devrions le réécrire". Donc nous l'avons fait, pour autant que je me souvienne, nous avons déménagé à ashx handler. Mais maintenant, comme je me prépare à passer 70-515, je suis tombé sur un certain matériel qui suggère toujours d'apprendre les services asmx (en ce qui concerne AJAX). Cette approche est-elle toujours valable dans les nouveaux projets Web ASP .NET 3.5/4.0? Si oui, alors quand & où devrais-je l'utiliser?La technologie ASMX est-elle complètement obsolète?

Ou peut-être il y a 2 ans, j'étais tellement ignorant, que nous avons utilisé une sorte d'ancienne version d'asmx et nous avons déménagé vers de nouveaux asmx.

P.S. Si vous entrez le tag "asmx", j'ai vu un message: "asmx est obsolète": https://stackoverflow.com/tags/asmx/info

Répondre

2

Si vous pouvez travailler avec WCF alors oui les services ASMX sont obsolètes car le WCF peut les remplacer complètement par plus de performance et de flexibilité (liaison multiple), fonctionnalité. Si vous pouvez écrire un service WCF, si vous êtes invité à créer un service ASMX pour une raison quelconque, cela ne vous posera aucun problème.

Passer d'ASMX à ASHX n'était pas une bonne idée, car ils ne se remplacent pas mutuellement. ASMX et WCF sont des technologies pour construire des services Web dans .NET.

+0

L'utilisation d'asmx pour une communication AJAX pure est donc correcte? – dragonfly

+1

Oui et je ne voudrais pas réécrire un service ASMX si cela fonctionne correctement. Si un service existant avait besoin d'améliorations, je suis sûr que je réécrirais tout le service avec la technologie WCF (et bien sûr je n'écrirai aucun nouveau service ASMX). –

0

WCF a été introduit dans .NET 3.0. Son objectif est de fournir une abstraction standard sur toutes les technologies de communication et est une façon recommandée de mettre en œuvre des services Web dans .NET.

What are the differences between WCF and ASMX web services?

ASHX est une façon d'écrire httphandlers dans .NET. Pour plus d'informations sur ce que sont HTTPHandler

http://forums.asp.net/t/1166701.aspx/1

services ASMX sont pris en charge dans .NET. Cependant, la migration vers WCF est recommandée. En outre, vous devez écrire tous les nouveaux services dans WCF.

+0

WCF a été remplacé par ASP.NET MVC 4 WebAPI? http://www.asp.net/web-api – Eric

+0

@Eric - WebAPI est préféré pour les services REST, mais si vous avez besoin d'écrire un service SOAP, WCF est la technologie que vous utiliserez. WCF introduit également quelques fonctionnalités avancées que WebAPI ne supporte pas facilement. – BornToCode

1

Bizarrement, nous sommes passés d'ASMX à WCF, puis de nouveau à ASMX. WCF a pas mal d'inconvénients, surtout des problèmes de compatibilité multiplateforme. Si tout le monde utilise votre service sur .NET ce n'est pas un problème, mais tous les autres frameworks n'ont pas supporté la pile complète, et souvent ils ne peuvent pas faire ce que WCF produit. Nous avons également constaté que traiter avec la sécurité et les tests était une douleur dans la WCF. Si votre service Web est marqué sécurisé, il doit être sécurisé dans WCF, même dans votre environnement de test, ce qui signifie obtenir des certificats SSL réels pour chaque développeur. Une douleur énorme pour être sûr.

+1

La compatibilité multiplate-forme n'est pas un problème en général avec WCF. Il peut y avoir des cas où ASMX fonctionnera avec certains services Web non conformes lorsque WCF ne le fera pas, du moins pas sans personnalisation. –

0

Oui, asmx est obsolète avec le service WCF. vous pouvez utiliser asmx lorsque vous travaillez avec < 4.0 aspx.

ashx ne sera pas exact remplacer asmx.

Si vous avez un problème de format de codage/standard/beaucoup de code, vous pouvez utiliser MVC Web API 2 (4.0 lui-même). mais comparez à WCF vous devez vous assurer quelle sera l'attente de réponse du destinataire ("WCF est l'évolution du service Web (ASMX) et supporte divers protocoles comme TCP, HTTP, HTTPS, Canaux Nommés, MSMQ .. mais API Web uniquement pour HTTP (s) ").