Apeluri de asincronizare

Avem un server singleton remoting care rulează într-un serviciu separat de ferestre (să o numim RemotingService). Clienții RemotingService sunt instanțe ASP.NET (multe multe).

În prezent, clienții remoting apel RemotingService și blocuri în timp ce apelul RemotingService este service. Cu toate acestea, serviciul de remoting devine destul de complicat (cu mai multe apeluri RPC și algoritmi complexi) că thread-urile lucrătorilor asp.net sunt blocate pentru o perioadă semnificativă de timp (4-5 secunde).

În conformitate cu acest articol msdn , acest lucru nu va scară bine deoarece un asp .netul lucrătorului de rețea este blocat pentru fiecare RPC remoting. Acesta recomandă trecerea la dispozitivele de asincronizare pentru a elibera firele asp.net de lucrători.

Scopul unui manipulator asincron   este de a elibera un pool ASP.NET thread   fir pentru a satisface cererile suplimentare   în timp ce manipulatorul procesează   cerere originală.

Acest lucru pare a fi bine, cu excepția faptului că apelul de remoting încă ocupă un fir din fundul fileului. Este aceasta aceeasi fisa de thread cu thread-urile lucratorului asp.net?

Cum ar trebui să fac din serverul singleton de remontare într-un sistem de asincronizare, astfel încât să-mi eliberez firele asp.net?

Probabil am pierdut câteva informații importante, te rog să-mi spui dacă mai e nevoie să știi să răspunzi la întrebare.

0
fr hi bn

2 răspunsuri

Ideea din spatele folosirii ThreadPool este că prin aceasta puteți controla cantitatea de fire sincrone și, dacă acestea devin prea multe, atunci piscina filetelor gestionează în mod automat așteptarea firelor mai noi.

Asp.Net threaded thread (AFAIK) nu vine de la Pool-ul Thread și nu ar trebui să fie afectat de apelul dvs. la serviciul remoting (cu excepția cazului în care acesta este un procesor foarte lent, iar funcția de remoting este foarte CPU intensivă - în care caz, totul de pe computer va fi afectat).

Puteți găzdui întotdeauna serviciul de remoting pe un alt server fizic. În acest caz, thread-ul muncitorului asp.net va fi total independent de apelul dvs. remoting (dacă apelul remoting este apelat pe un thread separat care este).

0
adăugat
După cum se menționează în articolul legat de întrebare, thread-ul lucrătorului asp.net provine într-adevăr din fondul de threaduri de runtime.
adăugat autor CVertex, sursa
0
adăugat
Mulțumesc, dar caut în special pentru HttpHandlers.
adăugat autor CVertex, sursa