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