Je dois créer un service WCF qui accepte la requête du client et se connecte en interne à un ordinateur distant pour effectuer le travail. La machine distante a une très bonne capacité de traitement mais pas une bonne vitesse de traitement. Cela signifie que vous pouvez traiter par exemple 1000 transactions par seconde, mais que chaque transaction peut prendre 1 seconde, la seule façon est d'avoir 1.000 transactions simultanées en cours dans la même seconde. La machine distante gère très bien cette situation, mais je m'inquiète pour WCF, si chaque transaction est interne (je ne m'inquiète pas du modèle côté client (sync ou async)) en attente et en bloquant un thread dans le serveur pour 1 ou 2 secondes cela pourrait représenter 1.000 threads de travail en live et cela pourrait être très dangereux, ou peut-être que WCF utilise le pool de threads et met juste les autres requêtes en attente et c'est aussi mauvais. Donc, ma question concerne la possibilité de traiter la requête de manière asynchrone côté serveur. Ainsi, le flux de transaction doit être comme ceci:Traitement côté serveur asynchrone WCF
- Cliente initialize une demande (dans son côté est une demande synchrone)
- serveur recive la demande et de mettre cette demande dans une transaction de file d'attente et libérer le fil
- Lorsque la tâche se termine, le serveur termine la requête en envoyant le HTTP 200 et le résultat au client.
Merci!
Si vous utilisez votre service wcf dans IIS, vous n'aurez rien à faire de plus. IIS spoulera un thread séparé pour chaque requête, instanciera une nouvelle instance de votre wcf, traitera la requête et retournera les résultats. Si un thread existant est disponible, IIS l'utilisera au lieu d'en spouler un nouveau. – edepperson
Cela ne résout pas mon problème de Thread "saturation", j'ai besoin d'un traitement asynchrone qui n'est pas la réutilisation de thread –