2010-10-14 2 views

Répondre

3

Généralement, pour les modifications simples (principalement l'ajout de méthodes), vous pouvez étendre le contrat de service/l'implémentation dans le même point de terminaison. Encore une fois, quand je dis des changements sans rupture, cela signifie à la fois des changements syntaxiques et sémantiques. Sinon, le moyen le plus propre est d'héberger la nouvelle version du service sur un point d'extrémité différent. Donnez à vos clients la possibilité de migrer vers une version plus récente progressivement avant de fermer l'ancienne version (si nécessaire). Plusieurs fois, vous pouvez utiliser la majeure partie de votre implémentation de service derrière la scène et réduire les efforts.

De même, les modifications de service ne sont parfois pas dans les méthodes mais dans les données d'entrée/sortie. Ceux-ci peuvent être abordés à plusieurs reprises en versionnant vos structures de données. Par exemple, une fonction acceptant l'entrée XML peut commencer à prendre en charge des données/étiquettes supplémentaires en entrée. Dans ce cas, vous pouvez l'héberger sur le même point d'extrémité, puis déterminer à partir des données que le client envoie. Bien que, je préférerais avoir une autre méthode ou un nouveau point final dans un tel cas. Enfin, vous pouvez également avoir une méthode dans votre interface de service qui peut émettre des informations de version ou valider les informations de version fournies par le client pour lui indiquer si l'implémentation du service est compatible avec le contrat de service avec lequel il a été construit. Cela permet aux clients de donner des messages amicaux en cas d'incompatibilité ou de configuration incorrecte. Une autre variante d'un tel scénario peut être de renvoyer au client l'adresse de point final de la version de service compatible (sorte de découverte dynamique de service compatible).

1

Je voudrais ajouter un nouveau point de terminaison qui pourrait utiliser le même code dans le backend mais retourner juste une sortie différente.

Si la modification est suffisamment petite (comme une nouvelle propriété), vous pouvez idéalement mettre à jour la sortie de votre point de terminaison de service existant; Ajouter la nouvelle propriété à votre sortie et faire en sorte que les clients plus âgés l'ignorent. Le problème est que les consommateurs de savon (en particulier dans le monde .NET) utilisent des outils qui génèrent des proxies statiques qui sont très inflexibles à changer.

Questions connexes