La scrittura di handler asincroni è una delle novità offerte dalla versione 2.0 di ASP.NET.
Con questa tecnica è possibile demandare l'esecuzione di codice particolarmente oneroso ad un thread completamente scollegato dal client, che sfrutta la solita tecnica già utilizzata per le altre funzionalità asincrone offerte dal .NET Framework.
Per creare un HttHandler di tipo asicrono è sufficiente implementare l'interfaccia IHttpAsyncHandler anzichè IHttpHandler. L'interfaccia presenta due metodi BeginProcessRequest e EndProcessRequest, che servono rispettivamente a scrivere il codice associato all'inizio del processo ed alla fine.
Ecco un esempio:
public class MyAsyncHandler:IHttpAsyncHandler { public void ProcessRequest(HttpContext ctx) { // non utilizzato } public bool IsReusable { get { return false; } } // richiamato quando l'handler comincia ad eseguire public IAsyncResult BeginProcessRequest(HttpContext ctx, AsyncCallback cb, object obj) { // in state va impostato il risultato dato da un IAsyncResult return state; } // richiamato alla fine dell'esecuzione public void EndProcessRequest(IAsyncResult ar) { // richiamato quando il thread ha eseguito il codice // il Context deve essere reso disponibile attraverso // la nostra classe IAsyncResult, perchè HttpContext.Current // non è collegata al contesto corrente } }
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.