Les deux méthodes de génération d'un proxy sont valables, tout dépend du degré de contrôle que vous souhaitez avoir sur le proxy, et si vous possédez les deux côtés du code. Une troisième option existe également, vous pouvez créer à la main votre propre proxy. Laissez-moi vous expliquer :
Dans l'architecture SOA, nous transmettons des messages, ce qui est un paradigme différent de la transmission de pointeurs vers des objets sur un tas/une pile, qui est la norme dans le monde OO.
Ainsi, dans l'architecture SOA, le contrat (ce que vous pouvez faire) et le message (l'état sur lequel agir) sont importants et doivent être partagés avec les consommateurs du service afin qu'ils puissent tous se mettre d'accord sur le contrat ou les "règles d'engagement".
Le WS-* est un ensemble de spécifications permettant d'ajouter plus de fonctionnalités à notre appel de service (transactions distribuées, sécurité, etc.). Mais si nous faisons cela, nous devons tous nous mettre d'accord sur les règles et la saveur du type d'interaction que nous avons l'intention d'utiliser, de sorte que le service et ses clients doivent se mettre d'accord sur la manière exacte dont cela doit se produire et que cela doit être partagé.
La combinaison des définitions de contrat et des spécifications WS-* est appelée WSDL et c'est généralement ce qui est partagé entre les clients et les services, ce qui est conforme aux principes de la SOA selon lesquels nous partageons les schémas et les contrats, et non les classes, et la compatibilité est basée sur la politique (WS-*).
Ainsi, si vous utilisez channel factory, vous générez le proxy basé sur la définition de l'interface que vous avez et la configuration que vous avez mise en place à la volée, si vous utilisez add service reference, vous laissez l'IDE générer une classe proxy basée sur le WSDL du service tel qu'il existe alors.
Si vous créez vous-même le proxy, vous avez un contrôle total sur la façon dont cela se passe et vous pouvez intervenir dans la chaîne d'interception et faire des choses du côté client pour manipuler l'appel.
Cela dépend de ce que vous voulez faire.