Au fil du temps, votre service Web pourrait changer, que faites-vous et comment gérez-vous le changement? (Différentes versions, ajouter plus de fonctionnalités, modifier ou supprimer des fonctionnalités, etc.)Comment gérez-vous le changement avec vos services Web?
Répondre
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).
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.
- 1. Quand persister vos entités commerciales dans vos classes de services
- 2. HTML5 avec services Web
- 3. Construire vos propres contrôles Web
- 4. Comment tester vos applications web sur mobile?
- 5. Drapeaux avec les services Web
- 6. Services Web .asmx avec SSL
- 7. Services Web standard v Services Web sécurisés
- 8. SecurityException avec Silverlight Web Services
- 9. Comment faire tester vos clients
- 10. Comment contrôler avec précision vos requêtes avec MongoMapper
- 11. System.Security.Policy.Evidence, Web Services et souffler le LoH
- 12. Services Web MTOM Stream dans Spring Web Services Framework
- 13. Formation aux services Web avec PHP
- 14. Services Web avec Google App Engine
- 15. Comment publier nos services Web
- 16. Par où commencer avec le développement de services Web?
- 17. Authentification mutuelle avec les services Web
- 18. Services Web en cluster
- 19. Services Web ASMX avec extension SOAP
- 20. Consommation de services Web avec jboss
- 21. Comment vos développeurs travaillent-ils avec Git?
- 22. Utilisation de services Web Sharepoint avec Coldfusion
- 23. Application GWT on GAE avec services Web
- 24. Interaction Silverlight avec les services Web DataSet
- 25. Silverlight (RIA Services) changement de culture spontané
- 26. Comment diffuser vos images/fichiers avec VLC?
- 27. ASP.NET Web Services (pluriel) ou Web Service avec plusieurs classes
- 28. Gestion des services Web dans FlexBuilder - Comment fonctionne le gestionnaire?
- 29. Comment consommer des services Web RESTful avec WCF?
- 30. Sécuriser les services Web