J'ai un contrat WCF qui fonctionne avec le client V1. p>
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. P>
Y a-t-il des meilleures pratiques pour ce problème? Existe-t-il des attributs existants dans WCF que je devrais utiliser? P>
Merci. P>
3 Réponses :
Vous pouvez décorer vos anciennes propriétés comme 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. P>
ref: Attribut obsolète . P> [obsolète] code> 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] code> décoration ne sera pas transmis au client fort> qui utilise WSDL pour générer le proxy. P>
Le [obsolète] est une propriété personnalisée que vous avez créée non?
Désolé je voulais dire [obsolète] code>. Corrigé ça.
[obsolète] ne me laissera pas la possibilité de soutenir v1
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. P>
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. P>
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. P >
Vous pouvez jeter un coup d'œil sur Cet article pour référence détaillée. P>