Ajout de méthodes pour le webservice: les anciens clients ne doivent mettre à jour les références web?

StackOverflow https://stackoverflow.com/questions/2142813

Question

ProduitA utilise notre seul service Web, qui est un déploiement séparé de ProduitA. Nous déployons à la fois à la production.

Plus tard, nous écrivons ProductB. Au cours de cet effort, nous ajoutons une nouvelle méthode pour notre seul service Web. Cette nouvelle méthode n'a pas été dans le WSDL lors de l'expédition ProduitA. Nous faisons aucun changement à ProduitA dans le développement.

Lorsque nous déployons ProductB à la production, nous déployons également (à la production), la nouvelle version de notre seul service Web (à la même URL du point où ProduitA attend de le trouver). Nous ne Redéployer ProduitA à la production.

Le WSDL pour notre seul service Web a changé dans la production, mais les signatures des méthodes étant consommées par ProduitA ont pas changé. Ils sont encore dans le WSDL.

Will ProduitA ont des problèmes en raison de notre mise à niveau de notre seul service Web de cette façon?

Avez-vous mettre à niveau un client d'un webservice si le webservice a changé de telle sorte que les méthodes de gauche du client d'origine inchangée?

Était-ce utile?

La solution

Non. Tant que vous avez quitté les méthodes Produit A utilise seul, vous ne devez pas mettre à jour la copie du produit A du WebReference.

Autres conseils

Juste pour ajouter un peu plus en détail à la réponse actuelle, les seules modifications apportées à un service Web qui doit être répercutée au client proxy sont:

  • Suppression de méthodes;
  • Modification des signatures de méthode;
  • Modification du fixations / comportement (par exemple pour utiliser le chiffrement).

Ajout d'une nouvelle méthode, ou l'ajout de nouveaux champs / propriétés à un type, sont presque toujours des changements insécables (encore, il ne fait pas de mal à tester avec le client).

Gardez à l'esprit, bien sûr, que le client ne sera pas réellement être en mesure de utiliser ces nouvelles méthodes ou propriétés jusqu'à ce qu'ils reconstruisent. Mais il ne cassera pas existant fonctionnalité.

Normalement, je dirais non. Cependant, nous avons une personne sur 50 clients qui a des problèmes avec cela en utilisant JAX-WS. Ils obtiennent une erreur comme ceci:

javax.xml.ws.WebServiceException: 

The Endpoint validation failed to validate due to the following errors: 

:: Invalid Endpoint Interface :: :: The operation names in the WSDL portType
do not match the method names in the SEI or Web service implementation class. 
wsdl operations = [...] 

Je crois qu'il est lié à ceci:

http://pic.dhe.ibm.com/infocenter/wasinfo/v8r0/index.jsp?topic=%2Fcom.ibm.websphere.nd.multiplatform.doc%2Finfo% 2Fae% 2Fae% 2Ftwbs_devjaxws_exposewebmethod.html

Ce qui dit: " Les meilleures pratiques :. Assurez-vous de régénérer vos objets côté client chaque fois que vous recevez un fichier WSDL mis à jour"

Cependant, le WSDL côté serveur est vérifié lors de l'exécution de nos clients par exemple il échoue dès que nous ajoutons une nouvelle méthode. Je ne connais pas les détails ou la portée de la question, mais il semble que vous pouvez écrire une implémentation client SOAP qui brisera avec de nouvelles méthodes dans le WSDL servi par le service.

Je ne voulais pas carillon sur un fil de vieillissement, et de nombreux points clés ont déjà été faites, mais je voulais ajouter une note sur la migration des cadres. J'ai eu des comportements inhabituels parfois, après la migration de .Net 2.0 haut, tout au long de 4,6. J'élaborerait plus sur les erreurs spécifiques, mais ils étaient il y a quelque temps.

Je veux ajouter aussi que, bien que la plupart de ces commentaires, j'ai eu de nombreux problèmes de clients qui ne pas mettre à jour les références Web, même après les modifications minimales décrites ici. Et je pourrais ajouter que cela pourrait être le résultat de la plus récent cadre. J'ai lu dans de nombreux endroits dans MSDN au fil des ans que le WSDL doit toujours être régénérés.

Je suis en fait cherché une technique pour le faire automatiquement. Afin de prévenir les accidents de côté client lorsque les services Web ne sont mis à jour. Je trébuché sur ce fil dans cette recherche.

Pas vraiment une réponse, mais trop long pour un commentaire ici.

Alors que je suis d'accord qu'il n'y aura probablement pas de problème de ne pas mettre à jour les références de service des clients existants, vous devriez également demander à quels problèmes il y aura si vous ne mettre à jour les références de service de existantes clients. Assurez-vous de tester ce scénario aussi bien.

Bien que nous avons tendance à penser à ajouter la méthode au service comme quelque chose qui est seulement important sur le serveur, gardez à l'esprit que lorsqu'une référence de service est mis à jour, est en train de changer réellement le code du client.

Certaines organisations croient tester le code client lorsque les modifications du code client.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top