2010-07-18 17 views
7

Ho una pagina Web che utilizza AJAX per ottenere risultati di ricerca per una pagina. Sul lato server sto interrogando un servizio web che è molto lento - da 20 secondi a 2 minuti.Polling Vs Callback callback asincrono: l'approccio migliore per un servizio Web lento?

Da quello che ho capito, le mie opzioni stanno effettuando il polling o una richiesta a lungo termine.

AsyncCallback sembra essere l'ideale poiché il risultato verrebbe restituito non appena il servizio Web risponde e il thread non verrà bloccato sul lato server.

C'è un approccio migliore per farlo? Conoscete eventuali problemi con richieste HTTP a lungo termine in jQuery?

Aggiornamento: Sì, memorizzerò nella cache la risposta dal servizio web quando possibile. Non ho alcun controllo sul servizio web esterno che sto interrogando.

+0

Questo mi sembra un buon approccio. Aiuterà la scalabilità del server e non influirà sulle prestazioni della richiesta AJAX. – btlog

+0

Se si tratta di un servizio Web pubblico, è possibile ottenere i dati direttamente sul lato client (in modo asincrono) o dal proprio server web. Non sono sicuro di jQuery, ma la richiesta asincrona è disponibile in javascript ('XMLHttpRequest'). –

+0

2 minuti è un tempo molto lungo. Stai implementando il lato client di paging? Sarebbe un buon approccio per ottenere invece i dati pagati dal database. –

risposta

2

Stiamo utilizzando AsyncCallbacks per un polling del server che risponde tipicamente in 4:30 - 5 minuti e il sistema funziona correttamente.

Vale la pena ricordare che non si otterranno vantaggi (prestazioni, tempo di risposta, ecc.) Eccetto il fatto che il pool di thread di lavoro di IIS non verrà esaurito se si ottengono troppe richieste: es. Se otteniamo 2 richieste al minuto, di solito avremo 10 - 12 richieste in sospeso. In questo caso AsyncCallback non farà alcuna differenza. Se riceviamo 100 richieste al minuto, questo significa 500 - 600 connessioni in attesa, quindi Async è un must. Si tratta solo di gestire il pool di thread.

1

C'è solo un problema con questo approccio di navigazione dell'utente in un'altra pagina. Ciò che si può fare è memorizzare i risultati in cache da qualche parte, così non si finisce mai per interrogare il webservice.

+0

Sì, buon punto. Quando possibile, memorizzerò nella cache i dati dal servizio web. – andyuk

Problemi correlati