Si vous générez le code automatiquement, vous avez un problème de maintenance. Vous devez le régénérer à chaque fois que vous modifiez l'interface ou la configuration du serveur.
Pour cette raison, je ne génère JAMAIS le client à partir de métadonnées exposées.
L'interface doit être définie dans une bibliothèque. Appelons cette bibliothèque MyContractsLib. L'implémentation du service doit être dans un assembly distinct (que j'appelle MyContractsImplementation). Le client devrait aller dans une autre assemblée.
Le client doit ensuite utiliser une ChannelFactory pour créer le service.
var cf = new ChannelFactory<MyContractsLib.MyContract>(this.EndpointName);
MyContractsLib.MyContract serviceProxy = cf.CreateChannel();
Le seul scénario où il est justifié est si le service est développé par un tiers, et vous écrire indépendamment l'application cliente.
Si vous avez le temps et l'inclinaison, voir this presentation va dans ce sens.
Voir cette question similaire. Amusant, ce sont les mêmes deux personnes qui répondent. http://stackoverflow.com/questions/3697181/help-debugging-wcf –
Je pense que les deux réponses sont correctes dans différents scénarios. Pour mon scénario particulier et parce que je dois choisir une réponse correcte que je vais utiliser avec le WSDL – dnndeveloper