Comment puis-je créer un proxy client sans svcutil.exe ou ajouter une référence de service dans wcf? Je veux créer un proxy client au moment de la compilation. P>
4 Réponses :
Si vous avez accès au contrat de service (l'interface IService) dans une DLL séparée, vous pouvez ajouter une référence à cette DLL de contrat de service, puis faire quelque chose comme: et ensuite Vous avez votre proxy créé par programme, que vous pouvez maintenant utiliser comme vous le souhaitez. p> p>
Est-ce que le canaysorysory code> nécessite un nouvel objet de liaison code> à chaque fois? Ou devrait-il bien créer l'adresse de la liaison et du point d'extrémité une fois et utilisez-les pour créer
canalelysory code> s?
@epalm: Vous pouvez certainement conserver les objets de reliure et de terminaison et d'utiliser plusieurs fois plusieurs fois - aucun problème.
Vous n'avez pas besoin de coder générer (ou utilisez un fichier de configuration rempli de spécifications WCF).
Créez d'abord l'interface définissant le service ( Référencez l'ensemble d'interface dans l'ensemble client. P> puis créer un proxy client, pour [servicecontract] code>) avec des contrats de données de support Dans une assemblée distincte de la mise en œuvre du service. P>
imyservice code>: p>
Cela ressemble à une solution que je devais utiliser dans l'un de mes services Web. :-)
Ce n'est peut-être pas ce que vous recherchez, mais c'est assez intéressant.
Vipul Modi dispose d'une bibliothèque qui vous permet d'appeler des services WCF après avoir téléchargé leur WSDL, tout au moment de l'exécution. P>
< Un href = "http://blogs.msdn.com/vipulmodi/archive/2008/10/16/dynamic-proxy-and-memory-footprint.aspx" rel = "NOFollow Noreferrer"> Bibliothèque de Vipul Modi (dernière version) p>
vous permet de faire ce genre de chose: p>
Créez le proxyfactoriel spécifiant l'URI WSDL du service. strong> p> < Pré> xxx pré> parcourez les points d'extrémité, les métadonnées, les contrats, etc. strong> p> // ou p> Fermer le dynamicproxy strong> p>
Voici la solution que j'ai utilisée depuis que WCF a été introduite: Dans un ensemble d'infrastructures:
[ServiceContract] public interface INumeralConverterService { [OperationContract] Decimal RomanToDecimal(string roman); [OperationContract] string DecimalToRoman(Decimal @decimal); }
Avez-vous besoin de le créer au moment de l'exécution ou à la compilation, ou dans l'IDE? Pouvez-vous dire ce que vous essayez d'accomplir? Sinon, vous obtiendrez des réponses qui n'accompliront pas vos objectifs.
Connaissez-vous le contrat à l'avance? C'est-à-dire que vous avez peut-être l'interface de service comme code?
Appelez-moi fou, mais pourquoi voudriez-vous passer une prime et ne manqueriez-vous pas de répondre aux questions? Je soupçonne que vous obtiendrez davantage de si vous aidez les gens à vous aider ... ils posent des questions car il est important de donner une réponse appropriée.