regarder
WCF ChannelFactory vs générateur de proxy
Il semble que la meilleure pratique pour créer un client WCF consiste à créer un proxy (non généré automatiquement).
Je cherche en ligne depuis un moment et je n’ai trouvé aucun exemple complet (classe de proxy, web.config)
Pourriez-vous fournir un exemple ou des liens vers des ressources?
Cet article concerne exactement ce que vous demandez, je crois:
La WCF à la main … la bonne façon
Après avoir partagé cela, cependant, la création manuelle de vos mandataires n’est probablement pas toujours la meilleure utilisation possible de votre temps. Cet article présente d’excellentes raisons de le faire: vous aurez certainement plus de contrôle, vos clients auront peut-être plus de facilité, etc. comment utiliser exactement le proxy que vous fournissez peut être un problème.
Il y a une raison pour laquelle WCF autorise l’échange et la découverte de métadonnées et VS créera automatiquement des mandataires pour vous.
Quoi qu’il en soit, c’est un article intéressant et une technique qui vaut la peine d’être apprise.
C’est comme ça que je le fais.
Obtenir des contrats de service et des contrats de données
Si j’ai access au code de service, j’ai tous les contrats. Sinon, je peux utiliser svcutil ou Add Service Reference pour les générer.
Faire config
J’utilise Add Service Reference juste pour obtenir le fichier app.config. Je supprime ensuite tout ce qu’il génère. Modifiez le fichier app.config si nécessaire.
Définir l’usine
Disons que j’ai un contrat de service IFooService
:
interface IFooServiceChannel : IFooService, IClientChannel { }
C’est littéralement ça. Aucun membre.
Créer une usine
fooServiceFactory = new ChannelFactory( "NetTcpBinding_IFooService");
La chaîne “NetTcpBinding_IFooService” est l’atsortingbut name
de l’élément de binding
dans app.config.
Créer un canal
fooService = fooServiceFactory.CreateChannel();
Utilise le
fooService.DoSomething();
La partie la plus délicate est d’obtenir correctement app.config. Vous devez en savoir plus sur les liaisons et les points de terminaison . C’est un peu une courbe d’apprentissage, mais rien de radical.
Voici les étapes de base.
C’est vraiment aussi simple. Pas de code généré automatiquement, pas de références de service. Cela devient un peu plus compliqué avec les appels asynchrones et Silverlight, mais pas trop.