web-dev-qa-db-fra.com

Référence Web vs référence de service

Je viens de frapper un énorme mur de briques avec Paypal. J'avais créé un projet C # standard pour créer des classes wrapper à l'aide de leur WSDL.

Si vous créez un projet non Web, la seule option que vous aurez pour ajouter un fichier WSDL est une référence de service Web. Et cela construit à peu près le même ensemble de classes de proxy qu'une référence Web ne le ferait, mais pas vraiment.

Donc, pendant tout ce temps, je cherchais la bonne interface dans cette liste de classes de proxy à utiliser comme service (SoapBinding) et le PayPalAPIAASoapBinding n’était pas là. Je ne cessais d’indiquer à notre point de contact Paypal.

Je ne pouvais voir que les 2 interfaces suivantes qui m'apparaissaient ce que je devais utiliser car je ne voyais pas de PayPalAPIAASoapBinding que vous POUVEZ voir dans une référence de service basée sur la référence Web:

PayPalAPIAAInterfaceClient
PayPalAPIInterfaceClient 

J'ai donc compris que j'avais probablement créé une référence de service par rapport à une référence Web, laquelle référence Web est une option dans un projet Web. Mais je ne veux pas que ma référence de service soit étroitement associée à mon projet Web. C'est pourquoi j'ai créé le projet C #.

Alors, qu'est-ce qui se passe entre une référence de service et une référence Web? Et comment suis-je censé séparer cela dans un autre projet si Service Reference doit me lancer une boucle et me donner un ensemble d'interfaces différentes de celles d'une référence Web?

En outre, pour rendre les choses encore plus confuses, VS 2008 a un projet d’application de service Web.

Alors qu'est-ce que j'utilise? Nous utilisons le framework .NET 3.5 et nous sommes pas prêts à passer à WCF. Alors, puis-je quand même utiliser la nouvelle référence de service même si je n'utilise pas WCF ou quoi? SI vous utilisez encore .NET 3.5 et pas encore WCF et que vous souhaitez toujours effectuer des services Web de base, continuez-vous à suivre l'itinéraire de référence de service sans utiliser le framework WCF? Cela peut-il encore être utilisé comme une référence Web .NET 2.0, mais simplement que vous obtiendrez une génération totalement différente du WSDL?

107
PositiveGuy

Ajouter une référence Web est la technologie ASMX (ASP.NET Webservices) obsolète (utilisant uniquement XmlSerializer pour vos données). Si vous procédez ainsi, vous obtenez un client ASMX pour un service Web ASMX. . Vous pouvez le faire dans pratiquement n'importe quel projet (application Web, site Web, application console, Winforms - vous le nommez).

Ajouter une référence de service est le nouveau moyen de le faire, en ajoutant une référence de service WCF, ce qui vous donne un modèle de service beaucoup plus avancé et beaucoup plus flexible que de simples éléments ASMX.

Puisque vous n'êtes pas prêt à passer à la WCF, vous pouvez également ajouter l'ancienne référence Web si vous devez réellement: lorsque vous effectuez une "Ajouter une référence de service", dans la boîte de dialogue qui apparaît, cliquez sur le bouton [Options avancées]. bouton] dans le bouton à gauche:

alt text

et dans la boîte de dialogue suivante, cliquez sur le bouton [Ajouter une référence Web] en bas.

207
marc_s

Si je comprends bien votre question:

Pour ajouter une référence de service Web .net 2.0 au lieu d'une référence de service WCF, cliquez avec le bouton droit sur votre projet, puis cliquez sur "Ajouter une référence de service".

Cliquez ensuite sur "Avancé .." en bas à gauche de la boîte de dialogue.

Cliquez ensuite sur "Ajouter une référence Web .." en bas à gauche de la boîte de dialogue suivante.

Vous pouvez maintenant ajouter une référence Web régulière SOAP telle que vous la recherchez).

8
Moose

L'ajout d'une référence de service vous permet de créer un client WCF, qui peut être utilisé pour communiquer avec un service Web standard à condition que vous utilisiez la liaison appropriée. L’ajout d’une référence Web vous permettra de créer niquement une référence de service Web (c’est-à-dire SOAP).

Si vous êtes absolument certain que vous n'êtes pas prêt pour la WCF (vous ne savez vraiment pas pourquoi), vous devez créer une référence de service Web régulière.

4
Otávio Décio

En fin de compte, les deux font la même chose. Il existe quelques différences de code: les services Web n’ajoutent pas d’espace-noms racine du projet, mais les références de service ajoutent des classes de services à l’espace-noms du projet. La classe ServiceSoapClient obtient un nom différent, ce qui n’est pas important. Lorsque je travaille avec TFS, je préfère utiliser Service Reference car cela fonctionne mieux avec le contrôle de source. Les deux fonctionnent avec les protocoles SOAP.

Je trouve préférable d’utiliser le service de référence car il est nouveau et sera donc mieux entretenu.

3
user3628475