3 messaggi dal 06 luglio 2011
Ciao a tutti,

arei bisogno di gestire il multi-threading in un applicazione che ho sviluppato. Ho letto la guida http://www.aspitalia.com/articoli/asp.net2/multi-threading.aspx, ma non riesco ad adattarla alla struttura della mia applicazione ed avrei bisogno di un aiuto.

La struttura dell'applicazione è questa:

Pagina aspx-->application class (dove normalizzo i dati)-->Database class (in cui eseguo le interrogazioni).

Ora, ad esempio, vorrei realizzare un login con i thread e questi sono gli step della mia applicazione:

Nella pagina apsx(al click di un pulsante):

 if (IsPostBack && username.Text.Length > 0 && password.Text.Length > 0)
        {
            AppUtenti appUtenti = new AppUtenti();
            Utenti utente;
            
            utente = appUtenti.validateLogin(username.Text, password.Text);
...


Nella classe application AppUtenti:

public Utenti validateLogin( String user, String password )  {
        DbUtenti dbUtenti = new DbUtenti();
        
        return dbUtenti.getUtente(user, password);
    }


Nella classe database DbUtenti mi viene restituito, dopo l'esecuzione di una query di select, un oggetto di tipo Utenti.

Secondo voi dove e come dovrei usare i thread all'interno di questo flusso di dati?

Grazie a tutti in anticipo
547 messaggi dal 24 maggio 2002
Contributi
Sinceramente non riesco a capire perché dovresti usare i thread per effettuare una login.

In linea di massima io uso i thread solo per effettaure codice in modalità asincrona; ad esempio per inviare email di notifica oppure per rigenerare la cache.

Per farti un esempio in un flusso tipo:
- salvo i dati
- uso un thread asincrono per inviare una mail all'utente

In questo caso l'uso dei thread fa si che l'utente non debba aspettare anche il tempo necessario all'invio della mail per visualizzare la risposta.

Altro esempio è quello di un semplice sistema di log: faccio un'operazione e notifico al sistema di log di "loggare" l'azione, senza che questo abbia ripercussioni sul tempo di esecuzione dell'operazione principale.

Marco.
3 messaggi dal 06 luglio 2011
Ciao,

volevo utilizzare i thread per scongiurare la possibilità che l'applicazione si "blocchi" perchè, ad esempio, un'utente esegue un'interrogazione al database, che richiedere alcuni secondi per essere eseguita e di conseguenza gli altri utenti collegati vedano un rallentamento di prestazioni.
547 messaggi dal 24 maggio 2002
Contributi
Innanzi tutto ogni richiesta di ogni utente è un thread seoparato dagli altri quindi se ogni thread esegue una funzione di cui bisogna aspettare il risultato in termini di prestazioni globali non cambia nulla.

Comunque proprio per questo, come ti dicevo, uso i thread per operazioni (magari lunghe) che però non devono avere un output verso l'utente immediato.
Per farmi capire meglio: se uso un thread per effettuare la login, l'utente dovrà aspettare fino a quando questo non risponderà true o false quindi perchè non fare il processo sincrono. Altro esempio, se ho compilato una for e la posto per salvare i dati dovrò aspettare che i dati vengano salvati prima di procedere.

A questo punto direi che l'unica strada che potresti prendere è quella di utilizzare "AJAX"; in questo modo potrai gestire gli eventuali tempi di attesa.

Marco.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.