Attualmente sto controllando un vecchio pezzo di codice C # usato per mantenere una sessione di accesso.
public static ZRWebserviceSession CurrentSession { get { return _currSession; } set { _currSession = value; } }
private static ZRWebserviceSession _currSession;
public static bool IsSessionActive()
{
if (_currentSession == null || !_currentSession.IsOpen || !_currentSession.IsLoggedIn) {
return false;
}
return true;
}
Mi è sempre stato detto che usare i globals è una cattiva pratica e sto cercando dei modi per migliorare questo pezzettino di codice eliminando almeno il campo statico usato per mantenere la sessione.
La situazione attuale è la seguente:
All'avvio dell'applicazione, l'oggetto sessione viene avviato con un indirizzo server (preso da un file di configurazione) a cui dovrebbe connettersi. L'oggetto recupera quindi i dati della sessione (token, ecc.) Dal server per archiviarli in sé e viene quindi assegnato alla variabile statica per l'accesso attraverso l'intera applicazione. Questo viene fatto solo all'inizio dell'esecuzione dell'applicazione o quando l'utente riavvia esplicitamente la sessione.
Mentre una sessione è attiva, altri pezzi di codice possono chiamare i metodi sull'oggetto di sessione per recuperare i dati di sessione ed effettuare chiamate al servizio web connesso.
Questo può essere migliorato? L'uso dei globals è ancora una cattiva pratica se usato per sessioni o qualcosa di simile a questo?
EDIT: per chiarire che tipo di applicazione si tratta: questa non è un'applicazione web ma un'applicazione client che si connette a un servizio web. ZRWebserviceSession è un oggetto libreria che rappresenta una sessione di accesso per l'utente che attualmente utilizza l'applicazione client. Un po 'come l'oggetto della sessione del link di Fabebook SDK.