Il protocollo HTTP è senza stato. Le sessioni sono un modo per preservare lo stato del client attraverso le richieste HTTP. Puoi scegliere di farlo con la gestione della sessione integrata di una piattaforma o farlo tu stesso con i parametri della stringa di query. In entrambi i casi è necessario un concetto di sessione per molte attività.
Probabilmente al tuo collega non piace un'implementazione specifica o non ha utilizzato le sessioni per gli scopi previsti. Se è necessario conservare le informazioni su una specifica connessione client attraverso richieste HTTP, è necessaria una qualche forma di persistenza della sessione.
I seguenti problemi sono specifici dell'implementazione:
Natura non tipizzata delle variabili di sessione
Natura dell'ambito globale delle variabili di sessione
Server di bilanciamento del carico che perdono sessioni
Riavvio di pool di applicazioni / server
Ad esempio, lavoro spesso in PHP e memorizzo le informazioni sulla mia sessione in un database relazionale. Quindi le mie variabili di sessione vengono digitate. Il bilanciamento del carico e il riavvio del server non causano problemi di sessione.
Questo è più interessante:
Timeout della sessione che causano la perdita di stato
Le sessioni sono spesso conservate tramite i cookie. Questi possono essere eliminati dal cliente in qualsiasi momento. Ma possono anche essere preservati tramite un parametro della stringa di query e quindi non andare mai in timeout sul client. Il timeout del server dipende da te. Quindi anche questo problema è specifico dell'implementazione.
Non buttiamo via l'intero concetto di sessioni solo perché non ci piace un'implementazione particolare. Qualsiasi buon framework di applicazioni Web faciliterà l'utilizzo corretto delle sessioni per preservare gli accessi degli utenti o conservare qualsiasi altra cosa specifica per la visita corrente dell'utente. Il record del database di un utente può (e dovrebbe) essere utilizzato per archiviare elementi specifici al momento dell'accesso. I visitatori anonimi, tuttavia, possono avere informazioni temporanee che vale la pena conservare anche nella loro sessione, come un breve elenco di pagine recenti visitate o la preferenza per nascondi un avviso che hanno già visto. Generalmente solo le informazioni temporanee più piccole sono appropriate per l'archiviazione della sessione.
using things like query string parameters instead
- In questo caso, utilizzare sempre sempre i parametri della stringa di query, se possibile. L'uso della sessione per quel tipo di parametro è fragile e può introdurre strani bug quando gli utenti hanno più schede aperte.