2009-02-18 31 views
1

Je suis en train de tester les performances d'une section critique de mon projet, quand je remarque que beaucoup de threads supplémentaires sont utilisés pour effectuer des opérations WaitOrTimerCallback.Les clients proxy ASMX ou WCF utilisent-ils des ports d'achèvement d'E/S?

alt text http://lh4.ggpht.com/_p7-jVU64mGg/SZuWgUvTD7I/AAAAAAAAAEk/PUFrXrYvZh0/threads_thumb%5B1%5D.jpg?imgmax=800

regardant de plus près, je peux voir que ceux-ci sont par mon client donné naissance à ASMX classe proxy pour les opérations sur un serveur distant. J'ai eu l'impression que ceux-ci utilisaient des ports d'achèvement d'E/S comme tous mes autres appels d'E/S asynchrones.

Est-il possible d'obtenir un client proxy ASMX ou WCF pour utiliser des ports d'achèvement d'E/S? Si non - vraiment quel est le point?

[MISE À JOUR] Le projet utilisait des clients proxy ASMX. Il semble qu'ils utilisent le pool de threads normal pour enregistrer un WaitOrTimerCallback. Je travaille maintenant avec les clients proxy de WCF. Ceux-ci ne génèrent pas de threads supplémentaires, donc je ne peux que supposer qu'ils utilisent les ports d'achèvement d'E/S désirés. La classe ASMX Proxy a été créée à l'aide de Visual Studio 2008. J'avais ajouté la ligne suivante au fichier de projet: "WebReference_EnableLegacyEventingModel> true" Comme la saveur actuelle des clients ASMX n'a ​​pas Asynchronous activé par défaut.

+0

Les threads appelés "Default Dispatcher" doivent être les seuls threads "vraiment actifs" –

Répondre

2

Je ne peux pas parler pour ASMX, mais WCF le fait certainement (et comme vous je serais surpris si ASMX ne le fait pas). Pouvez-vous obtenir les piles d'appels pour s'assurer qu'elles sont vraiment bloquées sur les appels réseau (et pas un autre code utilisateur)?

Questions connexes