Quando usare variabili globali e non oggetti Session?

giovedì 22 novembre 2007 - 09.03

paquito_ita Profilo | Senior Member

Ciao,

sto realizzando un sito web e almomento mi devo occupare della gestione della sessione utente. Il sito (dedicato) viene acceduto da PDA e contiene contenuti informativi (dettagli di progetti di cui si è membri specifiche, eventi futuri, ecc.). L'utente può non solo furire di tali contenuti, ma anche creare nuovi documenti, eventi o assegnare compiti.

Durante lo sviluppo al fine di limitare il più possibile il n° di query al DB per desumere il contenuto informativo (che varia da utente a utente in base ai progetti di cui è membro)uso degli oggetti Session come flag. Ovvero dopo che eseguo la prima volta una determinata query per desumere determinati documenti, setto a true una certa variabile che definisco Session. In tal modo se l'utente torna alla stessa pagina, il contenuto informativo (presente in un placeholder) può essere semplicemente caricato senza dover eseguire nuovamente la query.

In tal caso sarebbe più corretto usare una variabile globale? Ora che ci penso potrei forse semplicemente controllare il numero dei control contenuti nel placeholder, se == 0 significa che è la prima volta che lo eseguo, altrimenti è già stato riempito una volta (ogni placeholder viene usato univocamente in una pagina). Può essere una soluzione accettabile?

Da qui la domanda: quando è bene usare variabili globali e quando oggetti Session? Uso un oggetto Session per memorizzare l'ID dell'utente desunto al momento del controllo login, in tal caso mi sebre giusto, no?

Altro quesito: ho definito nella cartella "App_code" di VS 2005 delle classi utility (ad esempio creano la connessione al db ed eseguono la query) come SINGLETON, in quanto non ha senso avere più istanze di tali classi. Tuttavia più utenti potrebbero accedere al sito e usare tali classi/istanze contemporaneamente. DA qui sorge la necessità di sincronizzare gli accessi. Venendo da Java so che tramite costrutty synchronize lo si puo' fare, ma come renderlo in C#?
Mi poreste dare info a riguardo o rimandare a qualche tutorial non troppo evasivo?

Grazie mille!
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 !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5