Domanda

Sto eseguendo il debug di un servizio Web ASMX che riceve "scoppi" di richieste. vale a dire, è probabile che il servizio Web riceverà 100 richieste asincrone entro circa 1 o 2 secondi. Ogni richiesta sembra impiegare circa un secondo per l'elaborazione (questo è previsto e sto bene con questa prestazione). Ciò che è importante, tuttavia, è che ogni richiesta viene gestita in modo sequenziale e non ha luogo l'elaborazione parallela. Non desidero l'elaborazione di richieste simultanee a causa dei componenti esterni chiamati dal servizio web. Esiste un modo per forzare il servizio Web a gestire ogni risposta solo in sequenza?

Ho visto l'attributo maxconnection in machine.config ma questo sembra funzionare solo per le connessioni in uscita, dove come desidero limitare le connessioni in entrata.

Si noti che il refactoring in WCF non è un'opzione in questo momento.

Stiamo utilizzando IIS6 su Win2003.

È stato utile?

Soluzione

Forse dovresti mettere in coda le richieste internamente ed elaborarle una per una?

Potrebbe causare il polling dei risultati da parte dei client (se ne hanno persino bisogno), ma otterresti la pipeline sequenziale che volevi ...

Altri suggerimenti

In IIS7 è possibile impostare un limite di connessioni consentite a un sito Web. Puoi usare IIS7?

Quello che ho fatto in passato è semplicemente inserire una dichiarazione di blocco attorno a qualsiasi accesso alla risorsa esterna che stavo usando. Nel mio caso, era un pezzo di codice non gestito che sosteneva di essere thread-safe, ma che in realtà avrebbe eliminato l'heap della libreria di runtime C se vi fosse stato accesso da più di un thread alla volta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top