strategia di polling per un'applicazione ASP.Net?
Domanda
Ho un'applicazione ASP.Net che ha bisogno di bisogno di avere qualche lavoro svolto da un'altra macchina. Per fare questo sto lasciando un messaggio sulla coda di visibile a entrambe le macchine. Quando il lavoro è fatto di un messaggio viene lasciato sulla seconda coda.
Ho bisogno l'applicazione ASP.Net di verificare la seconda coda periodicamente per vedere se uno dei compiti sono completi.
Dove è il posto migliore per ma tale ciclo? Global.asax?
Ricordo di aver letto da qualche parte che si può ottenere una funzione chiamata dopo un intervallo. Vorrei che sia adeguato?
Soluzione
Per le azioni periodiche su asp.net, ho trovato due approcci accettabili:
- genera un thread durante Application_Start a global.asax, in un ciclo while (1) fare il lavoro (2) del sonno il filo per un intervallo.
- Anche in questo caso in Application_Start, inserire una voce fittizia nella cache asp.net, scade in un certo intervallo e dare voce che la cache di un callback da chiamare quando è scaduto. In quella richiamata, si può fare il lavoro e inserire l'elemento della cache di nuovo allo stesso modo.
In entrambi i casi, è necessario assicurarsi che il filo continua a lavorare, anche se vi capita un errore. Si può inserire un codice di ripristino in SessionStart e BeginRequest per controllare il tuo thread o una voce di cache è lì, e rinnovare se è successo qualcosa ad esso.
Altri suggerimenti
Suppongo che questo è fatto in maniera regolare, e che qualche altro processo pone le voci sulla coda?
Se questo è il caso, si potrebbe mettere qualcosa in Global.asax che all'avvio applicazione crea un thread separato che controlla semplicemente la coda, è possibile utilizzare un timer per avere che il sonno filo per X secondi, quindi controllare i risultati.