2010-04-29 34 views
1

Je me demandais si vous pouviez partager les meilleures pratiques et les erreurs courantes quand il s'agit de faire grands grands nombres d'appels de service Web sensibles au temps. Dans mon cas, j'ai un service Web SOAP et un service Web basé sur XML-RPC auquel je fais des appels constamment. Je prédis que cela va bientôt devenir un problème car le nombre d'appels par seconde va augmenter. À un niveau supérieur, je pensais à grouper ces appels et à les soumettre aux services Web toutes les 100 ms. Pourriez-vous partager quoi d'autre fonctionne? Sur un niveau inférieur des choses, j'utilise le client Apache Xml-Rpc et les paquets standards javax.xml.soap. * Pour mes implémentations client. Connaissez-vous des astuces/conseils/avertissements liés à l'évolutivité du client avec ces packages?* L'évolutivité du client * pour un grand nombre d'appels de service Web à distance

Merci à l'avance

Yuriy

Répondre

0

Une chose à réaliser est que JavaScript vous êtes toujours faire face à une pompe à l'événement: un événement du navigateur se produit, ou une minuterie arrive à expiration, puis un morceau de JavaScript est exécuté. Avec ce modèle d'exécution à l'esprit, vous ne voulez pas vraiment penser à avoir un processus d'envoi par lots et d'envoi périodique - ce que vous voulez faire est de regrouper tous les appels qui se produisent dans une pompe d'événement (le morceau de javascript exécutant en réponse à un événement du navigateur) et les envoyer. Ceci est fait en changeant votre code rpc de sorte que chaque appel met en file d'attente des appels avec des paramètres et des fonctions de rappel dans un tableau global, et s'il met en attente le premier appel, il programme également avec setTimeout(..., 0) une fonction qui enverra tout dans la file d'attente et effacer le tableau. Commencez par cela et expérimentez plus tard avec d'autres modèles d'exécution, comme déclencher la première requête dès que vous l'obtenez et envoyer tout le reste dans un lot après que la pompe d'événement actuelle est terminée.

+0

Je devais être plus clair dans ma question: ce n'est pas un client de navigation dont je parle mais l'un des serveurs de mon réseau distribué de différents serveurs qui pourrait faire un nombre scandaleux d'appels de service Web vers d'autres les fournisseurs de services. Tout le code de ma plate-forme de serveur est écrit en Java et les bibliothèques utilisées sont: Apache XML-RPC et javax.xml.soap standard de bas niveau. * – Yuriy