Différence entre la référence Web et la référence de service?

132

Quelle est la différence entre la référence Web et la référence de service dans WCF? Qu'est-ce qui est préférable dans WCF?

John Saunders
la source
Jetez également un œil à Channel Factories - stackoverflow.com/questions/1698275/…
Manish Jain
1
hmm, peut-être sélectionner une réponse? good question by the way
Daniël Tulp

Réponses:

102

La réponse de bas niveau ici est qu'une référence Web créera une classe de proxy client qui permet à votre code de parler à un service Web qui est décrit via WSDL et communique via SOAP ou HTTP GET (d'autres affiches indiquent qu'il s'agit uniquement d'ASMX, mais Les références Web peuvent également communiquer avec les services Web Java ou Python ou Ruby tant qu'ils parlent tous WSDL et sont conformes à la norme d'interopérabilité WS-I).

Une référence de service créera une classe de proxy client qui communique avec un service basé sur WCF: que ce service WCF soit un service Web ou non.

Kevin Hoffman
la source
1
+1 pour avoir ajouté que tout service Web standard avec un WSDL correctement formaté répond aux critères
sidney.andrews
Puis-je ajouter une référence de service à un service Web Java? Cela aurait-il encore du sens? puisque Java ne sait rien de la pile wcf ...
user20358
oui, vous pouvez ajouter une référence de service à un service Web java etc, s'il a un wsdl. La référence de service la traitera comme une référence Web "classique" dans ce cas.
Brady Moritz
+1 pour indiquer que le service Web peut utiliser les services Web décrits par WSDL, ainsi que ASMX. En fait, j'ai une couche métier qui a une référence Web et une référence de service. La référence Web utilise un service Web WSDL, tandis que la référence de service utilise un service ASMX.
Jagd
67

Une référence Web vous permet de communiquer avec n'importe quel service basé sur n'importe quelle technologie qui implémente le WS-I Basic Profile 1.1 et expose les métadonnées pertinentes en tant que WSDL. En interne, il utilise la pile de communication ASMX côté client.

Une référence de service vous permet de communiquer avec n'importe quel service basé sur toute technologie qui implémente l'un des nombreux protocoles pris en charge par WCF (y compris, mais sans s'y limiter, le profil de base WS-I). En interne, il utilise la pile de communication WCF côté client.

Notez que ces deux définitions sont assez larges et que les deux incluent des services non écrits en .NET.

Il est parfaitement possible (bien que non recommandé) d'ajouter une référence Web qui pointe vers un service WCF, tant que le point de terminaison WCF utilise basicHttpBindingou une variante personnalisée compatible.

Il est également possible d'ajouter une référence de service qui pointe vers un service ASMX. Lorsque vous écrivez un nouveau code, vous devez toujours utiliser une référence de service simplement parce qu'elle est plus flexible et à l'épreuve du temps.

Christian Hayter
la source
1
Quelqu'un peut-il me expliquer comment utiliser un service via Service Reference? Avec Web Reference, je semble toujours être en mesure de trouver les fonctions de base dans une sorte d'objet de service. Avec une référence de service, pas tellement. À titre d'exemple, j'essaie d'utiliser le service de tarification FedEx pour obtenir les prix des différentes options d'expédition FedEx. Je sais qu'il y a un appel getRates () quelque part, mais je ne le trouve pas avec une référence de service.
Ben Mills
@BenMills: recherchez une classe avec un Clientsuffixe.
Christian Hayter
17

La référence de service est la nouvelle interface pour ajouter des références à toutes sortes de services WCF (il peut ne pas s'agir de services Web), tandis que la référence Web concerne spécifiquement les références Web ASMX.

Vous pouvez accéder aux références Web via les options avancées dans Ajouter une référence de service (si je me souviens bien).

J'utiliserais la référence de service parce que si je comprends bien, c'est le mécanisme le plus récent des deux.

DavidWhitney
la source
8
Ajouter une référence de service -> Avancé -> Ajouter une référence Web ... rien de tel que des solutions peu intuitives.
Jagd
7

Les références de service traitent des points de terminaison et des liaisons, qui sont entièrement configurables. Ils vous permettent de pointer votre proxy client vers un WCF via n'importe quel protocole de transport (HTTP, TCP, mémoire partagée, etc.)

Ils sont conçus pour fonctionner avec WCF.

Si vous utilisez un WebProxy, vous vous engagez à utiliser WCF sur HTTP

Brian Genisio
la source
5

Un autre point à prendre en compte est que la nouvelle interface utilisateur pour l'interface de service vous donnera beaucoup plus de flexibilité sur la façon dont vous souhaitez créer votre classe de proxy. Par exemple, il vous permettra de mapper les contrats de données sur les DLL existantes, s'ils correspondent (en fait, c'est le comportement par défaut).

Wagner Silveira
la source