Memorandum ASP.NET


Il blog di uno smanettone .net
Archivio Posts
Anno 2012

Anno 2011

Long Running Task with ASP.NET

Tempo fa mi ero imbattuto in un problema che credo abbiamo incontrato il 99% degli sviluppatori web: lanciare un'operazione che impiega diverso tempo per l'esecuzione (Long running task).

Descrizione del problema

La cosa più sgradevole per un utente è avere la sensazione che la pagina web si sia bloccata, vedendo il browser in "caricamento" ma non vedendo un risultato in tempi brevi.
Nel mio caso l'applicazione lancia un pacchetto SSIS su SQL Server per importare ed elaborare dati da file Excel. Quando i dati raggiungono una certa sostanza, l'esecuzione può durare anche qualche minuto. Pensate cosa significa fissare un browser vuoto, con la barra di caricamento praticamente ferma. A me già 15 secondi danno fastidio!!!!!

Possibili soluzioni

Dando una risposta al problema in maniera veloce ed istintiva, mi vengono in mente tre o quattro possibili soluzioni per dare una sorta di "speranza" all'utente.

Partiamo dalla più semplice e veloce: utilizzare il Parial Rendering con un UpdatePanel ed un UpdateProgress. I questo modo possiamo per lo meno creare una piccola interfaccia di attesa mentre il codice lato server rimane in esecuzione. A parte una minore (molto minore) frustrazione da parte dell'utente, questa soluzione si può applicare a situazioni dove l'attesa non supera il minuto, anche perché in genere i timeout di ambiante sono settati a 2 minuti, e dove non è necessario avere feedback durante l'esecuzione del codice.

Altra soluzione, simile ma più elaborata, si può implementare attraverso una chiamata AJAX pura. Possiamo implementare un WebService piuttosto che un PageMethod, piuttosto che una semplice pagina aspx che espone una funzione da poter chiamare tramite una classe Proxy creata con ASP.NET AJAX, oppure JQuery, MooTools o qualsiasi altro metodo di implementazione. Questa soluzione prevede la consocenza della metodologia AJAX e una seppur piccola parte di programmazione lato Client per la modifica dell'interfaccia e l'interazione con l'utente.

Precisando che la soluzione AJAX è molto valida e che permette elasticità e personalizzazione, voglio proporre comuque una terza soluzione, basata prevalentemente su ASP.NET senza ausilio di javascript.

La soluzione completa

Categoria: ASP.NET
lunedì, 20 giu 2011 Ore. 10.02
Statistiche
  • Views Home Page: 11.393
  • Views Posts: 21.499
  • Views Gallerie: 0
  • n° Posts: 20
  • n° Commenti: 2
Mappa


Cerco un gentile volontario che mi aiuti a tradurre i miei post in inglese (sono una schiappa)
Lasciatemi un contatto

Offerte Estive NAVTEQ
Offerte Estive NAVTEQ


Copyright © 2002-2007 - Blogs 2.0
dotNetHell.it | Home Page Blogs
ASP.NET 2.0 Windows 2003