Scope delle properties in una classe

lunedì 14 dicembre 2009 - 09.42

paquito_ita Profilo | Senior Member

Ciao,

all'interno di una classe utilizzo delle properties per definire attributi che descrivono i parametri di connessione con un servizio esterno (ad esempio, uso una proprietà: "SessionCode" che viene inizializzata con l'identificativo della sessione aperta con il servizio esterno). Successivamente tali proprietà vengono anche utilizzate nell'ambito della classe al'interno di alcuni metodi.

Vorrei avere conferma che, ogniqualvolta dal client viene acceduta tale classe, un nuovo thread viene utilizzato per gestire la richiesta, quindi se l'utente1 ha inizializzato tale proprietà con un valore e continua ad usarlo, l'utente 2 inizielizzerà tale proprietà con un altro valore senza che vi siano interferenze fra i due utenti/accessi.

Grazie

Gluck74 Profilo | Guru

In linea di massima credo proprio di si, che ongi client abbia la propria connessione, ma ti chiedo qualche informazioni in più:
che ti po di classe è quella che usi con i parametri? ovvero hai fatto una dll? sta dentro una pagina? un controllo web?

paquito_ita Profilo | Senior Member

La classe "alfa" è nella cartella App_Code e contiene, come proprietà, dei parametri usati per eseguire determinate chiamate a servizi esterni.
L'accesso a questa classe avviene da del codice presente in una pagina:

Accedo alla pagina iniziale "home" -> al PageLoad() vengono invocati alcuni metodi della classe "alfa" e istanziate le proprietà (in particolare con valori identificativi per il servizio cui si è acceduti).

1) l'utente A, dopo aver acceduto alla home, utilizza un certo servizio (inizializzando le proprietà di conseguenza)
2) l'utente B accede alla home e decide di iniziale anche lui il servizio. Il codice re-inizializza le proprietà in base al 2* utente.

Il quesito quindi è: lato server i valori delle proprietà sono quelle impostate dall'ultimo utente? Quindi se dopo l'accesso del 2* utente, il primo necessita di riusare i valori delle proprietà, questi sono sovrascritti?

Gluck74 Profilo | Guru

L'unica eccezione è se questi valori sono presi e/o salvati da Application[]; solo in questo caso sono condivisi da utendi diversi.
Viceversa cono completamente isolati.

Ciao ciao

paquito_ita Profilo | Senior Member

Cosa sarebbe esattamente Application[] ? Simile a variabili Session, ma con scope a livello di applicazione (invece che di Sessione)?

Io semplicemente uso il set/get delle properties, senza usare altre viariabili di Sessione/applicazione.
Dentro la mia classe le properties sono inizializzate/reperite nel seguente modo:
private int _meetingid = 0; public int MeetingID { get { return _meetingid; } set { _meetingid = value; } }

Grazie per la risposta

Gluck74 Profilo | Guru

si esatto, è l'equivalente alle Session, ma memorizzate a livello dell'intera applicazione.
Nel tuo caso dunque non dovresti avere problemi.

ciao ciao
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5