Question

Mon fournisseur de services Web me fournit un fichier WSDL volumineux, mais nous n'utiliserons que quelques fonctions à l'intérieur.

Je pense que les grands fichiers WSDL ont un impact négatif sur les performances de l'application.

Nous utilisons le service Web dans les applications client, les heures de démarrage et l'utilisation de la mémoire posent problème. Large WSDL signifie que jax-ws prend plus de temps pour faire la liaison et prend plus de mémoire pour la classe stub.

Est-il possible de couper le fichier WSDL en une version allégée? Existe-t-il un outil à cet effet?

Je ne pense pas que mon fournisseur de services Web génère un autre WSDL pour nous. Nous devrons peut-être le faire automatiquement dans le script de construction .

Était-ce utile?

La solution

En bref, vos réponses sont & "Aucun outil, mais vous pouvez créer un bricolage &";

.

Je souhaiterais qu'un outil simple puisse le faire car mon WSDL contient trop de fonctions inutilisées et de schémas de structure de données.

Si je peux l’automatiser, WSDL - > WSDL découpé - > générer des classes de stubs clients. Aucune information inutilisée ne sera générée, aucune utilisation abusive, aucune maintenance requise, nous ne toucherons pas au code généré, et je peux vraiment me concentrer sur le code utilisé. JAR plus petit, temps d'analyse XML plus court. Si le WSDL est mis à jour, il ne me restera plus qu'à reconstruire les classes de stubs client et à exécuter le test unitaire.

J'ai essayé de rester à l'écart des humains invoqués. Cela prend du temps, il est facile de se tromper et il faut chaque fois refaire un petit changement dans le WSDL original.

Je ne suis pas au courant du schéma WSDL. Je pense que cela peut être fait par XSLT?

Autres conseils

La taille du WSDL n'aura aucun impact sur les performances ... sauf si vous le téléchargez et / ou analysez-le pour chaque demande. Et si vous faites ce dernier, ne le faites pas. Il ne doit être traité que lorsque le service change, et le service doit toujours changer de manière compatible, avec la prise en charge permanente des anciens messages (au moins pour une période de temps qui se chevauchent).

Vous devriez considérer le traitement d'un WSDL comme un changement de programme et le faire comme vous le feriez pour toute version, avec gestion des versions, tests, etc.

.

Le problème ne vient pas de la taille du WSDL lui-même. C'est la taille du code généré qui compte. Par exemple, si vous utilisez Axis2 pour générer votre code à partir d'un WSDL volumineux, vous créez une classe Request / Response pour chaque opération WSDL, ainsi que les classes de leurs types de retour. Vous vous retrouverez ensuite avec une énorme classe de stub, ce qui pourrait affecter les performances car elle importerait les classes requises par les opérations de service Web dont vous n'avez pas besoin.

Il n’existe pas d’outil facile à utiliser. J'utilise habituellement notepad ++ pour le faire, et OUI, vous pouvez toujours faire des erreurs en le faisant.

Une autre erreur courante consiste à choisir de générer les méthodes de style Sync et Async lorsque la plupart du temps (du moins dans mon cas), vous n’utilisez que des méthodes de style Sync. Cela pourrait également augmenter considérablement la taille de votre talon.

Je n'ai pas utilisé les outils dont vous parlez, mais vous pouvez exécuter des méthodes de service Web sans que le code ne touche jamais un fichier WSDL.

Cela semble être le bon moment pour exécuter un test rapide. Coupez tout du fichier WSDL, sauf ce dont vous avez besoin pour exécuter l'une des méthodes les plus simples que vous envisagez d'utiliser. Référencez cette copie du WSDL à la place. Si cela fonctionne, vous savez quoi faire ensuite!

Il n'est pas nécessaire de rogner le WSDL. Si vous êtes prêt à emprunter ce chemin, supprimez tout élément inutile dans les classes de stub. Assurez-vous simplement de le tester au fur et à mesure pour vous assurer que tout fonctionne toujours.

Vous pouvez simplement supprimer manuellement le < wsdl: operation > éléments correspondant aux méthodes dont vous n’avez pas besoin et voyez si cela suffit. Vous devriez pouvoir supprimer ces éléments sans toucher au reste du fichier.

La taille physique du WSDL ne devrait pas avoir d'importance si vous générez des classes de talons client lors de la compilation (par exemple, via AXIS wsdl2java.) Si vous téléchargez le WSDL et si vous le analysez pour chaque requête, téléchargez-le. le temps sera probablement plus petit que le temps d'analyse. Pensez à mettre le fichier en cache localement si le temps de téléchargement devient un problème. Si le temps d'analyse devient un problème, vous pouvez envisager de supprimer le fichier ou de mettre en cache les objets analysés. Faites preuve de prudence lors de la mise en cache ou du rognage du fichier, car vous devrez intégrer toutes les modifications lorsque votre fournisseur émettra un nouveau WSDL. Pensez à mettre à jour votre WSDL mis en cache / découpé chaque fois que le service est redémarré ou à un certain intervalle.

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