12
votes

Comment créer un proxy client sans SVCercez ou ajouter une référence de service dans WCF?

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.

wcf

3 commentaires

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.


4 Réponses :


11
votes

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: xxx

et ensuite Vous avez votre proxy créé par programme, que vous pouvez maintenant utiliser comme vous le souhaitez.


2 commentaires

Est-ce que le canaysorysory nécessite un nouvel objet de liaison à 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 s?


@epalm: Vous pouvez certainement conserver les objets de reliure et de terminaison et d'utiliser plusieurs fois plusieurs fois - aucun problème.



5
votes

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 ( [servicecontract] ) avec des contrats de données de support Dans une assemblée distincte de la mise en œuvre du service.

Référencez l'ensemble d'interface dans l'ensemble client.

puis créer un proxy client, pour imyservice : xxx


1 commentaires

Cela ressemble à une solution que je devais utiliser dans l'un de mes services Web. :-)



7
votes

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.

< 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)

vous permet de faire ce genre de chose:

Créez le proxyfactoriel spécifiant l'URI WSDL du service. < Pré> xxx

parcourez les points d'extrémité, les métadonnées, les contrats, etc.

  • usine.endpoints
  • usine.metadata
  • Factory.Contractions
  • usine.bindings

    créer dynamicproxy à un point final en spécifiant soit le point final ou nom contractuel. xxx

    // ou xxx

    invoquer les opérations sur la dynamicproxy xxx

    Fermer le dynamicproxy xxx


0 commentaires

0
votes

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);
}


0 commentaires