Voici mes hypothèses de base:Filetage de serveur Wcf duplex - Où faire des E/S DB synchrones?
WCF exécute mes méthodes d'opération de service sur les threads IOCP (UnsafeQueueNativeOverlapped) au lieu de fils de ThreadPool normaux (QueueUserWorkItem).
Le blocage des E/S doit être et non effectué à l'intérieur des méthodes d'opération de service unidirectionnel.
Le blocage des E/S doit être et non à l'intérieur d'un thread ThreadPool normal.
Je crois que la meilleure stratégie est de appelle async chaîne. Donc, si je reçois un message dans mon service de service unidirectionnel, je fais un appel asynchrone à ma base de données et quand cela se termine, fais mon prochain appel db asynchrone, etc. et finalement réponds via mon rappel wcf ...
Cependant, il est difficile d'effectuer chaque appel de base de données asynchrone. J'ai recouru à la violation des règles 2 et 3 ci-dessus, mais je ne l'aime pas parce que je crois que cela va affamer le ThreadPool finalement. Y a-t-il de meilleures stratégies?
J'ai examiné le CustomThreadPool de Jon Skeet, mais je ne suis pas sûr que ce soit la réponse non plus.
Merci pour votre réponse. Ce n'est pas un mauvais compromis à faire, j'en tiendrai compte. –