Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
[asp.net 4.0] Eseguire stored e rimandare a pagina di cortesia
martedì 02 settembre 2014 - 12.29
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
mazinga76
Profilo
| Newbie
10
messaggi | Data Invio:
mar 2 set 2014 - 12:29
Ciao,
spero che qualcuno possa aiutarmi perche' non so piu' che fare
Ho creato una applicazione web che contiene un wizard con 4 step.
il 4 step e' definito come final, quando clicco sul bottone di questo step avvio una stored procedure che ci sta un bel po' a fare dei calcoli (anche 15 minuti).
In questo tempo vorrei fare in modo che una volta avviata la stored, l'utente veda una pagina di cortesia in cui lo aggiorno sullo stato del calcolo, sempre da questa pagina l'utente deve potersi spostare su un'altra pagina che riporta la cronologia dei calcoli in corso.
Il tutto in vb.net
Ho letto varii articoli su delegate, pagine asincrone e su background worker ma non ho proprio idea di come fare ...
Grazie
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
gio 11 set 2014 - 12:34
>Ciao,
ciao
>il 4 step e' definito come final, quando clicco sul bottone di
>questo step avvio una stored procedure che ci sta un bel po'
>a fare dei calcoli (anche 15 minuti).
Ahia.. cominciamo male. Se il database impiega così tanto, non è usato come dovrebbe. Probabilmente hai spostato logiche di business, cicli, ragionamenti molto di business su di esso, il che non è una pratica da seguire possibilmente.
>In questo tempo vorrei fare in modo che una volta avviata la
>stored, l'utente veda una pagina di cortesia in cui lo aggiorno
>sullo stato del calcolo, sempre da questa pagina l'utente deve
>potersi spostare su un'altra pagina che riporta la cronologia dei calcoli in corso.
Eh la cosa migliore sarebbe fare un servizio in .net che faccia i calcoli avendo i dati necessari presi in lettura sul database.
Cercando però di spostare le logiche su servizio, in modo da poter anche scalare e parallelizzare i calcoli, anche per andare a ridurre il carico e i lock sul database.
In questo modo, da codice, puoi avere controllo sullo stato di calcolo (puoi usare chiamate asincrone piccole per farti tornare gli stati di ogni esecuzione per la "barra di progresso").
Se non ti puoi permettere un cambiamento (o anche se non vuoi cambiare le cose), direi che l'unica è scrivere una tabella di "stati" e aggiornarla direttamente dalla logica nella stored procedure, facendo attenzione al fatto che (quasi di certo) sei sotto transazione isolata (e quindi la tabella non è leggibile). Le letture che puoi fare dalla pagina di cortesia dovranno, in tal caso, leggere in read uncommitted, altrimenti non riuscirai mai ad avere uno stato corrente visibile ed aggiornato.
Tuttavia è una pratica che mi sento di sconsigliare vivamente (non è una gran architettura, anzi). Piuttosto, se non vuoi spostare la logica dal database, cerca almeno di splittarla o di trasformarla da iterativa a SET BASED.
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://blogs.dotnethell.it/suxstellino
http://suxstellino.wordpress.com
http://mvp.microsoft.com/profiles/Alessandro.Alpi
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !