2011-08-09 8 views
1

J'ai créé un service WCF simple en utilisant ws2007HttpBinding qui retourne juste l'entier qui lui est passé.Appel asynchrone WCF lent, appel synchrone rapide

Quand je l'appelle de façon synchrone, le premier appel est en cours de 100ms, puis les appels suivants sont sous 10ms

Quand je l'appelle de manière asynchrone le premier appel est approximativement de l'ordre de 1000ms, les appels suivants sont également des Est-ce que je manque quelque chose lorsque j'appelle le service de manière asynchrone? Cela semble très lent, le service n'a pratiquement aucune logique de traitement

J'ai essayé ceci avec le client et le serveur sur la même machine et sur différentes machines. Je vais le même résultat

Je pensais que c'était le bogue où les threads n'étaient créés que toutes les 500ms, mais j'ai implémenté cela et cela n'a fait aucune différence.

Si quelqu'un connaît la réponse qu'ils peuvent afficher leur code et le service/configuration client

Ceci est tout à fait urgent pour moi de sorte que toute aide serait appréciée

+0

Êtes-vous en cours d'exécution sur .NET 3.5 ou 4.0? –

Répondre

0

Comment obtenez-vous le temps? L'heure que vous avez indiquée ici correspond-elle au temps de réponse?

Comme vous utilisez la méthode asynchrone, vous ne pouvez pas savoir si l'appel sera programmé pour être appelé. Si vous pensez que le temps est critique, il est préférable d'utiliser de manière synchrone.

0

Je viens de découvrir que le problème de thread semble être sur le client, pas sur le serveur. Une fois que j'ai défini le nombre de threads minimum en utilisant ThreadPool.SetMinThreads.

Je vais faire un peu plus d'enquête et après si je trouve quelque chose

+0

C'était la cause du problème. Définir le nombre minimum de threads sur le client sinon seulement 2 requêtes (une par thread) seront envoyées simultanément – Michael