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?
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?
Réponses:
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.
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 basicHttpBinding
ou 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.
Client
suffixe.
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.
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
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).