Categorie
ASP

Salvare un oggetto ASP dentro una Session

Tempo fa avevo la necessità di salvare un oggetto VBScript all’interno di una var di sessione, ora VBSCript non è un vero e proprio linguaggio di scripting orientato ad oggetti anche se con la versione 5 qualche passo in avanti in questa direzione è stata fatta.
Tuttavia (visto che gli oggetti VBS non sono realmente memorizzati come oggetti) non è possibile memorizzare un oggetto all’interno di una var Session od Application.

Una soluzione potrebbe essere utilizzare due metodi ad hoc per quantomeno simulare il risultato.

Per prima cosa ci dichiariamo la nostra classe necessaria ad instanziare gli oggetti:

Class MiaClasse
    Dim Var1
    Dim Var2
End Class

Quindi creiamo due metodi attraverso i quali andremo ad incapsulare le proprietà dell’oggetto in una Session (o meglio delle Session) e poi e riassegnarli ad un nuovo oggetto

Sub Serialize_MyClass( instanza, sessionVar )
    Session( sessionVar & ".Var1" ) = instanza.Var1
    Session( sessionVar & ".Var2" ) = instanza.Var2
End Sub

Function Deserialize_MyClass(sessionVar)
    Dim instanza : Set instanza = new MiaClasse
    instanza.Var1 = Session( sessionVar & ".var1" )
    instanza.Var2 = Session( sessionVar & ".var2" )
    Set Deserialize_MyClass = instanza
End Function

Vediamo infine un esempio concreto:

Dim mioOggetto : Set mioOggetto = New MiaClasse
mioOggetto.Var1="pippo"
mioOggetto.Var2="pluto"
Serialize_MyClass mioOggetto, "sessione"

Dim mioOggetto2 : Set mioOggetto2 = Deserialize_MyClass("sessione")

Conclusioni

Come detto all’inizio non è possibile con VBS salvare un oggetto all’interno di una variabile di sessione, attraverso questa tecnica, utilizzando Serialize_MyClass andremo a salvare tante Sesson quante sono le
proprietà dell’oggetto e poi attraverso il metodo Deserialize_MyClass andremo a salvarle in un nuovo oggetto.

Risorse

http://decav.com/blogs/andre/archive/2007/02/12/1073.aspx

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.