2010-12-03 6 views
7

L'intention est de créer un ensemble de services Web que les gens peuvent réutiliser. Ces services interagissent principalement avec une base de données backend créant, récupérant et traitant des données.WCF vs webmethods ASPX vs webmethods ASMX

Nous voulons exposer les services afin que les gens puissent utiliser pour créer des mashups de données et d'autres applications.

Les utilisateurs finaux sont des pages web qui peuvent être dans notre domaine ou en dehors de notre domaine. Pour les pages en dehors du domaine, nous prévoyons de libérer des widgets qui seront configurés pour récupérer et afficher les données. Une exigence - l'application doit être extrêmement évolutive en termes de nombre d'utilisateurs qu'elle peut gérer.

Notre base de code est .net et nous examinons les méthodes Web ASPX (ou ASHX), les méthodes Web ASMX et WCF (commençant à lire sur WCF).

En termes de sécurité/accès, j'ai trouvé que le maintien de sessionid, appartenances est faisable dans tous les trois. WCF semble un peu compliqué à configurer. Je ne pouvais pas voir immédiatement la valeur d'asmx quand nous pouvons tout faire en utilisant simplement une webmethod dans aspx (avec un peu de peaufinage).

En outre, en supposant qu'avec ASP.NET MVC2, je pourrais être en mesure d'obtenir des URL propres aussi bien pour ces webmethods.

Questions

Lequel sera le plus efficace en termes de performances et évolutivité? Une raison pour laquelle je devrais choisir WCF ou ASMX?

Merci de prendre le temps de lire ce post et des excuses pour les questions naïves depuis que je suis nouveau à .net.

EDIT Je comprends que WCF est la voie à suivre. Juste pour comprendre l'évolution des technologies, il serait bon que quelqu'un puisse faire la lumière sur pourquoi une méthode web aspx est différente d'une asmx lorsque des choses similaires (en dehors de la découverte) peuvent être accomplies par les deux. Les webmethods aspx peuvent être faites pour renvoyer des données dans d'autres formats (texte en clair, json). En outre, il semble que nous pouvons construire des services reposants en utilisant ashx. Excuses à nouveau pour les questions naïves.

Répondre

9

Vous devez utiliser WCF pour développer des services Web dans .Net. WCF est hautement configurable avec de nombreuses options pour la sécurité, les protocoles de transport, la sérialisation, les extensions, etc. Raw performance est également significativement plus élevé. De plus, WCF est activement développé et de nombreuses nouvelles fonctionnalités sont ajoutées dans les versions 3.5 et 4. Il existe également des variantes telles que les services de données WCF et les services WCF RIA. WCF 4.0 a également une meilleure prise en charge REST et JSON que vous pouvez utiliser directement dans ASP.Net/JQuery.

+0

Je me demandais à quoi servait la WCF et votre réponse m'a fait changer d'avis. C'est génial de voir que Jquery reçoit tant de soutien. –

+0

Le support de JQuery s'améliorera encore plus. Vous pouvez déjà obtenir la version préliminaire de l'API Web WCF. http://wcf.codeplex.com/wikipage?title=WCF%20jQuery – softveda

+0

Les pages ASMX fournissent également le support JSON. http://encosia.com/asmx-and-json-common-mistakes-and-misconceptions/ – mattmc3

3

ASMX est considéré comme une technologie obsolète et remplacé par WCF. Donc, si vous allez commencer un nouveau développement qui nécessite d'exposer des services réutilisables, WCF est la voie à suivre.

+3

Avez-vous une ressource réelle que vous pouvez citer concernant votre assertion selon laquelle ASMX est obsolète? – mattmc3

+1

Lien vers la documentation de l'outil wsdl.exe pour .NET 3.5: (http://msdn.microsoft.com/en-us/library/7h3ystb6(VS.90).aspx). Remarquez le texte "Cette rubrique est spécifique à une technologie existante: les services Web XML et les clients du service Web XML doivent désormais être créés à l'aide de Windows Communication Foundation (WCF).". – dana

1

Je ne suis pas nécessairement en désaccord avec la réponse précédente. Mais, d'un point de vue différent, WFC est difficile à configurer. Il nécessite des liaisons, des points de terminaison, des tailles de paquets, beaucoup de paramètres de configuration, etc. dans vos fichiers de configuration, et de nombreux problèmes de sérialisation/désérialisation sont signalés. WCF est également une technologie relativement nouvelle (donc toujours exposée aux bugs et correctifs nécessaires). Le client généré [Référence.Les fichiers cs] peuvent avoir des interfaces indésirables, et chaque classe de client de propriété publique exposée dans le WSDL est générée avec le même modèle d'observateur utilisé par LINQ to SQL ou Entity Framework (OnChanged, OnChanging, etc.). Cela ajoute beaucoup de graisse au client code, par opposition à la manière traditionnelle du client Web SOAP. Ma recommandation, si vous n'utilisez pas Remoting over TCP ou si vous n'avez pas besoin du mécanisme de notification bidirectionnel pour les changements à distance - tout cela est des fonctionnalités très cool de WCF - vous n'avez pas besoin de l'utiliser.

+2

-1 Votre information est périmée. Entre autres choses, WCF est sorti depuis 2006. Vous pouvez aussi facilement organiser de ne pas générer INotifyPropertyChanged, ce qui n'a rien à voir avec les changements distants. –

+0

vous ne devriez pas passer des modèles de domaine via WCF de toute façon. –

Questions connexes