La configuration du client est un problème, alors j'obtiens mon ServiceEndpoint du serveur. Lorsque vous utilisez ChannelFactory (Of T), T est le contrat d'origine que vous pouvez obtenir d'une référence dans votre projet ou d'une instance de contrat générée. Dans certains projets, j'ai généré le code à partir d'une référence de service car je ne pouvais pas ajouter de référence à la DLL de contrat. Vous pouvez même générer un contrat asynchrone avec la référence de service et utiliser cette interface de contrat avec ChannelFactory.
Le principal objectif de l'utilisation de ChannelFactory était de me débarrasser des informations de configuration du client WCF.Dans l'exemple de code ci-dessous, vous pouvez voir comment réaliser un client WCF sans configuration.
Dim fixedAddress = "net.tcp://server/service.svc/mex"
Dim availableBindings = MetadataResolver.Resolve(GetType(ContractAssembly.IContractName), New EndpointAddress(fixedAddress))
factoryService = New ChannelFactory(Of ContractAssembly.IContractName)(availableBindings(0))
accesService = factoryService.CreateChannel()
Dans mon projet, les availableBindings sont vérifiés à utiliser net.tcp ou net.pipe si elle est disponible. De cette façon, je peux utiliser la meilleure reliure disponible pour mes besoins. Je ne compte que sur le fait qu'un point de terminaison de métadonnées existe sur le serveur.
J'espère que cette aide
BTW, cela se fait à l'aide de .NET 3.5. Cependant, cela fonctionne aussi avec 4.0.
@MurHaf Nope - cette réponse est entièrement mon propre travail. J'attribue TOUJOURS les contributions des autres. J'ai écrit cette réponse basée sur des années de travail avec les services SOAP dans .Net à divers travaux. Cet article que vous liez à partir de Mars 2013, alors que ma réponse a été écrite en Avril 2010 - 3 ans avant! Si le plagiat a eu lieu, il m'a copié. Vous devriez vérifier les dates avant de faire des accusations, car c'est très facile à faire. – Keith
@MurHaf Nous ne sommes même pas arrivés aux mêmes conclusions - cet article recommande la génération automatique d'un proxy (option 1) comme «simple». Je le décris comme facile à mettre en place, mais désordonné et douloureux à maintenir. Il ne parle même pas d'écrire son propre proxy (option 3). – Keith
Je pense que SvcUtil devrait aussi être mentionné, car c'est l'une des façons les plus courantes d '"écrire" un client. –