Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    258

    Connessione condivisa o no?...

    Salve ragazzi,
    vorrei chiedervi un'informazione,scusate la banalità e se potete motivatemela...

    Avendo un'applicazione web in cui in molte operazioni realizzo la connessione col db conviene avere in ogni metodo l'apertura della connessione e la relativa chiusura alla fine delle operazioni o conviene memorizzare la connessione in un oggetto e richiamare continuamente la stessa in ogni metodo senza mai chiuderla se non alla chiusura dell'applicazione?
    Grazie mille e scusate la banalità della domanda

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Dipende dall'applicazione WEB.
    Se l'applicazione deve rispondere a richieste istantanee (del tipo: arriva la richiesta di un utente, l'applicazione fornisce una risposta e la cosa muore lì) allora non vedo perchè mantenere una connessione con il database dopo la risposta (specialmente se non arriva alcuna richiesta).

    Se l'applicazione, invece, deve interagire con l'utente, allora conviene che la connessione rimanga attiva per tutta la durata della sessione dell'utente (puoi avere una connessione per ciascun utente, ma non è strettamente encessario).
    Non credo che sia molto performante avere un'applicazione che, per ciascuna operazione di un utente, attiva e disattiva la connessione con il database.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480
    Non sono certo dell'architettura Java riguardo le connessioni ai dati, ma solitamente all'interno delle applicazioni Web si tende ad aprire e chiudere le connessioni dopo l'uso in quanto non è sempre possibile, per questioni di performance e memoria, tenere una connessione aperta per ciascun utente collegato; per più utenti poi, in genere, potrebbero sorgere problemi dati dalla natura "multithreading" dell'applicazione (ciò che non so per certo è la presenza di "protezioni" dal punto di vista Java in questo ambito).

    Certo, anche l'apertura/chiusura di connessioni continua causa problemi di performance; in genere, però, si tende a risolvere questo problema istituendo dei "connection pool", cioè creando in anticipo un numero definito di connessioni al database da assegnare a specifiche operazioni quando la connessione ai dati, attraverso le apposite classi, viene aperta, restituendo la risorsa al "pool" quando l'operazione è finita.

    Magari datemi qualche lume a riguardo... penso che sia determinante per individuare una risposta alla questione presentata.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Per quanto riguarda la seconda parte della mia risposta, tengo a precisare che vale solo per alcuni tipi di applicazioni (web o non web). Esistono applicazioni (anche WEB) che permettono all'utente di lavorare in modo interattivo. Esempio: applicazioni che lavorano su un gestionale, permettono ad un utente di reperire l'anagrafica di un cliente, modificarla a video e salvarne le modifiche. In questo caso non ha senso aprire una connessione per la richiesta dell'anagrafica (SELECT su un DB), quindi chiuderla, lasciare all'utente la modifica, quindi riaprirne una seconda per il salvataggio (UPDATE). A mio avviso (ed è quello che faccio nelle mie applicazioni) è più logico aprire la connessione, effettuare la SELECT, quindi l'UPDATE e solo a questo punto chiudere la connessione (se l'utente se ne va).

    Un approccio di questo tipo io l'ho già usato nelle mie applicazioni (assolutamente non web) e queste applicazioni vengono tuttora utilizzate dall'azienda per cui lavoro. La comunicazione avviene in rete, su richiesta dell'utente. Le "sessioni" di comunicazioni sono brevissime, ma effettuano almeno 2 query di selezione sul DB e una query di aggiornamento (UPDATE o INSERT a seconda dei casi), il tutto utilizzando una sola connessione per ciascuna richiesta utente.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    258
    al riguardo avrei da dire anche un'altra cosa....sono alle primissime armi nello sviluppo di applicazioni web e mi è capitato di svilupparne una che prevedeva l'inserimento di dati relativi ad un esperimento a pezzi, attraverso numerose pagine di forms e dovendo gestire il tutto in una transazione per garantire le ACID ho trovato la necessità di usare una connessione condivisa durante tutta l'applicazione....mi è sembrato di aver capito che fosse necessario se un'utente vuole realizzare le query in una sola transazione....

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.