2008-10-16 6 views
5

Les clients de bureau transmettent des données à l'aide de WCF à un serveur central. Lorsque le schéma change, par exemple, 100 ordinateurs ont l'ancienne version du client de bureau alors que les autres utilisent la dernière version.Gestion des versions pour les clients lors de l'utilisation de WCF

Que dois-je faire sur le serveur pour gérer les deux versions? Est-ce que je crée 2 points de terminaison dans WCF ou un seul point de terminaison intelligent qui va comprendre la version et agir en conséquence?

Note: Je vais passer les informations de version du client (si nécessaire c'est)

Répondre

4

Vous avez le choix:

Tout d'abord, vous devriez Le versionnage de toute façon vos contrats de service, avec leurs espaces de noms; par exemple. http://idunno.org/2008/10/numpty passera à http://idunno.org/2008/11/numpty si les opérations de service ont des modifications de rupture.

Idem avec les contrats de données; Cependant, si tout ce que vous faites pour le contrat de données est additif, vous pouvez marquer les nouveaux champs comme optionnels;

[DataMember(IsRequired="false")] 

Et les anciens clients vont fonctionner. Cela devrait donc vous indiquer que les paramètres dans un service et les paramètres doivent également être des contrats de données; cela vous donne cette flexibilité.

MSDN a more

+0

Mes sentiments exactement! –

+0

C'est une bonne réponse, mais pour les futurs chercheurs, je veux juste mentionner que IsRequired est en fait faux par défaut, donc vous n'avez pas besoin de le définir explicitement. Un point important à retenir est de ne jamais changer le drapeau IsRequired du membre existant de false à true, et ne jamais définir de nouveaux membres à true! Plus important, lisez le lien MSDN :) – Joshua