Avem o aplicație Windows care apelează metode webservice pentru accesul la baza de date. Am găsit un caz în care efectuăm un apel lung (mai mult de 15 secunde), asincron, la un serviciu WCF pe IIS. Dacă interfața de utilizare efectuează alte apeluri de blocare (este codul vechi) de servicii web în timp ce se întâmplă, acele apeluri suplimentare se blochează până la finalizarea apelului asincron inițial.
Acest lucru nu se întâmplă atunci când interfața de utilizare și serviciile web rulează ambele în Visual Studio cu IIS Express: apelurile de blocare sunt rapide și toate aceste lucruri se termină cu mult înainte ca apelul asincron lung să se termine.
Toate serviciile web au următoarele:
<serviceThrottling
maxConcurrentCalls="5000" maxConcurrentSessions="5000" maxConcurrentInstances="5000" />
De asemenea, maxConnections="500" peste tot.
Am dori să facem ca IIS să gestioneze aceste apeluri de servicii web concurente în același mod în care face IIS Express, în același timp.
...
Dacă ajută, totul are sens: facem o căutare a obiectelor. Căutarea returnează primele 50 de articole (în mod implicit) care îndeplinesc criteriile și, în același timp, facem un apel asincron pentru count(*) pentru aceeași interogare. Interogarea de numărare poate dura foarte mult. Utilizatorii insistă că uneori vor să știe care este numărul total, dar de obicei doresc să poată deschide obiecte din lista de rezultate cu mult înainte ca numărul să revină. Deschiderea obiectelor este locul în care intră apelurile sincrone de servicii web. Anterior, rezultatele căutării și numărarea făceau parte din aceeași metodă de servicii web.