Oggi sono
riuscito a far funzionare un "giro del fumo" che trovo personalmente abbastanza
utile in certe occasioni: gestire una sorta di progress notification di un task
molto lungo in una pagina asp.net. Mi chiedevo se può interessare una
trattazione più approfondita.
il giro di cui sopra è qualcosa di questo
tipo:
servizio di windows che istanzia un oggetto e lo
fornisce a chi lo desidera in remoting e la cui classe implementa una
interfaccia, quest'ultima è posta nell'assembly condiviso per il remoting (nota:
io per qualche arcano motivo che non mi so spiegare _non_ sopporto i file di
configurazione, è una cosa di pelle)
pagina asp.net da cui partono richieste asincrone ai
metodi dell'oggeto remotato dal servizio, ovviamente i metodi sono quelli che
dichiara l'interfaccia. fin qui nulla di nuovo e tutto nella norma.
quello che un paio di giorni fa mi ha solleticato
l'ugola e che mi ha portato un passo più in là è stata la scoperta del
remote-scripting in asp.net 2.0 (anche conosciuto come client-callbak), non
volendo aspettare l'anno prossimo e avendo per le mani un progetto sul lavoro
che ben si adattava all'esigenza mi sono imbarcato nello studio di fattibilità
in asp.net 1.1. ciò che volevo ottenere non era solo la possibilità di avere il
risultato della lunga transazione eseguita nel servizio di windows in maniera
asincrona, ma era anche quello di averne la percentuale di progress senza
refreshare la pagina. a tal proposito ho utilizzato del codice javascript
trovato su codeproject.com, che poi ho scoperto essere tale e quale in mille
altri siti che trattano sia di .net che di java e che da quello che ho visto
_non_ fa uso dell'activex xmlhttp di micirosoft (tanto che gira anche su linux,
il codice javascript intendo).
ebbene, con un l'unica accortezza di generare una
sorta di contatore 1-->100 recuperabile tramite un metodo dell'interfaccia
(insomma la lunga transazione dovrebbe poter essere suddivisibile in step in
modo che ad ogni step si possa aggiornare tale contatore), ed utilizzando un
timer lato client (un timer javascript), sono riuscito nell'intento di ottenere
il progress nella pagina asp.net senza effettuare il refresh della stessa (bè,
il classico "click" del refresh internet explorer lo fa, inoltre la barrettina
blu di refresh in basso si fa notare, ma è poco fastidioso il tutto)
certo, c'è un po' da lavorare in javascript e il
"giro" magari è un po' laborioso, ma a mio parere in certe circostanze può anche
essere utilizzato.
PS: qui c'è appena stata una scossa di terremoto, in
Brianza credo che sianno anni ed anni che non se ne sentiva una, leggera, ma c'è
stata.
saluti
MesBlog powered by IMHO