Quelle est la meilleure façon de gérer l'ajout d'un nouveau paramètre (facultatif) à une opération existante sans que le client doive mettre à jour son WSDL? Je ne veux pas mettre à jour l'espace de noms pour décrire une nouvelle version des contrats de service, car cela devrait être rétrocompatible avec les anciens clients.Ajout d'un nouveau paramètre à une opération WCF: choix?
Dois-je ajouter une nouvelle opération avec un nouveau paramètre, en tant que surcharge? Ou devrais-je simplement ajouter le paramètre à l'opération existante?
Voici mon opération:
[OperationContract]
MyResponse GetData();
Faut-il:
[OperationContract]
MyResponse GetData();
[OperationContract]
MyResponse GetData(string filter);
Ou plus simplement, il suffit de changer à ceci:
[OperationContract]
MyResponse GetData(string filter);
Cette dernière option semble mieux, et selon mon livre de référence, "L'impact sur le client est aucun. Nouveaux paramètres sont initialisés aux valeurs par défaut au service. "WCF l'initialise à la valeur par défaut? Si oui, quelle est la valeur par défaut?
C'est un changement sans rupture. Je vais gérer si le filtre est nul ou vide gracieusement. –
@Mike: Je ne pense pas que ce soit inégal - soudainement, votre méthode "GetData" attend maintenant un paramètre qui n'est pas fourni par les appelants d'origine .... –
@marc_s: en raison de la flexibilité de WCF aussi longtemps à la valeur peut être nulle, un client qui ne lui passe pas quelque chose fonctionnera toujours. C'est l'avantage d'autoriser la non-concordance de version dans WCF. –