Question

Je suis en train de déboguer un service Web ASMX qui reçoit des "rafales". de demandes. c'est-à-dire qu'il est probable que le service Web recevra 100 demandes asynchrones dans un délai d'environ 1 ou 2 secondes. Chaque demande semble prendre environ une seconde à traiter (c'est prévu et je suis OK avec cette performance). Cependant, l’important est que chaque demande soit traitée de manière séquentielle et qu’aucun traitement parallèle ne soit effectué. Je ne souhaite pas de traitement simultané des demandes en raison des composants externes appelés par le service Web. Existe-t-il un moyen de forcer le service Web à ne traiter que chaque réponse de manière séquentielle?

J'ai vu l'attribut maxconnection dans le fichier machine.config, mais cela ne semble fonctionner que pour les connexions sortantes, où je souhaite limiter les connexions entrantes.

Veuillez noter que le refactoring dans WCF n’est pas une option pour le moment.

Nous utilisons IIS6 sur Win2003.

Était-ce utile?

La solution

Peut-être devriez-vous mettre en file d'attente les demandes en interne et les traiter une par une?

Cela peut amener les clients à interroger les résultats (s’ils en ont même besoin), mais vous obtiendrez le pipeline séquentiel que vous vouliez ...

Autres conseils

Dans IIS7, vous pouvez définir une limite de connexions autorisées pour un site Web. Pouvez-vous utiliser IIS7?

Ce que j'ai fait par le passé est simplement de placer une déclaration de verrouillage autour de tout accès à la ressource externe que j'utilisais. Dans mon cas, c’était un morceau de code non géré qui prétendait être sécurisé pour les threads, mais qui, en fait, effacerait le tas de la bibliothèque d’exécution C s'il était accédé à partir de plusieurs threads à la fois.

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