9
votes

Marquer les champs obsolètes dans le contrat WCF

J'ai un contrat WCF qui fonctionne avec le client V1.

Maintenant, je travaille sur le service V2, et je souhaite marquer certains des champs comme obsolète, donc le client V1 verra et les utilisera, et le client V2 les ignorera.

Y a-t-il des meilleures pratiques pour ce problème? Existe-t-il des attributs existants dans WCF que je devrais utiliser?

Merci.


0 commentaires

3 Réponses :


14
votes

Vous pouvez décorer vos anciennes propriétés comme [obsolète] mais le client ne les verra que s'ils utilisent une référence DLL et non de référence de service / Web (WSDL). [obsolète] décoration ne sera pas transmis au client qui utilise WSDL pour générer le proxy.

En termes de version de WCF, une fois que vous avez publié une interface, vous ne pouvez supprimer aucune méthode ou en termes de contrat, vous ne devriez vraiment pas supprimer aucune propriété. Vous pouvez publier une nouvelle interface et créer une classe DTO distincte si vous souhaitez qu'ils utilisent de nouveaux clients.

ref: Attribut obsolète .


3 commentaires

Le [obsolète] est une propriété personnalisée que vous avez créée non?


Désolé je voulais dire [obsolète] . Corrigé ça.


[obsolète] ne me laissera pas la possibilité de soutenir v1



0
votes

de notre côté, nous versions habituellement l'operatiom via un espace de noms. Lorsqu'une opération est obsolète, nous venons de mettre un commentaire de dépréciation dans la description que le client peut voir à travers le WSDL. Nous en informons nos clients et les informons des opérations obsolètes et lorsque sa date d'expiration va être.


0 commentaires

0
votes

Je suis d'accord avec @aliostad que vous ne devriez pas supprimer les opérations du contrat de service en général, car elle introduise une modification de rupture et, en tant que telle, doit être évitée dans une version unique de l'API.

Toutefois, si vous souhaitez informer le client / consommateur sur certaines modifications prévues ou avoir une autre nécessité d'ajouter certaines informations «supplémentaires» au contrat d'opération, vous pouvez consulter IWSDLEXPORTEXTENSension Interface, créez un attribut personnalisé qui l'applique et annotant des opérations particulières.

Vous pouvez jeter un coup d'œil sur Cet article pour référence détaillée.


0 commentaires