Just nu i M3-nätverket
Gå till innehåll

Objekt i Session-variabel


Janne A

Rekommendera Poster

Att lägga ett objekt i en sessionvariabel, är det dumt? Har förstått att en adodb.connection inte är bra att lägga där men objekt man skapar själv (med jscripts function), hur är det med dom?

 

 

Hälsningar Janne

Länk till kommentar
Dela på andra webbplatser

Jonas Wikström

Hej Janne A!

 

Ja det finns ett enkelt svar till din fråga. Lägg aldrig upp ett objekt i en session variabel. Det är ett enkelt sätt att göra din web-applikation minneskrävande och icke skalbar. Som du kanske vet vrappas mycket information runt ett objekt.

 

Förresten undvik att använda session state så mycket som möjligt. Information om att man är inloggad och vissa preferenser är nog nästan det enda legala..

 

http://msdn.microsoft.com/library/en-us/iisref/html/psdk/asp/iiapsess.asp?frame=true

 

MH

 

>> Jonas

 

[inlägget ändrat 2001-08-08 14:57:19 av Jonas Wikström]

[inlägget ändrat 2001-08-08 14:59:16 av Jonas Wikström]

Länk till kommentar
Dela på andra webbplatser

Tackar, intressant länk.

Har 4 strängar som jag vill ska finnas tillgängliga över hela sessionen. Det "naturligaste" sättet är att göra fyra session-variabler, en för varje sträng.

Kom sedan på att man kan ju skapa egna objekt i jscript, skapade en objektfunktion (eller vad det kallas) enligt:

 

function classUserInfo(username, ip, userlevel, customer)

{

this.username = username;

this.ip = ip;

this.level = userlevel;

this.customer = customer;

}

 

och instansen enligt

 

session("userinfo") = classUserInfo(...);

 

 

Det funkar bra, men frågan är om det finns någon stor prestanda-nackdel med detta? I så fall hur stor? Vet att en sessions-variabel upptar visst mycket minne och 4 st tar onekligen upp mer än en...

 

Hälsningar Janne

 

Länk till kommentar
Dela på andra webbplatser

Jonas Wikström

Hello Janne!

 

Vad jag skulle göra är helt enkelt att strunta i din funktion och spara dina variabler direkt i SessionsObjektet istället. Vad du gör är ju egentligen lite kaka på kaka faktiskt.

 

Vad beträffande prestanda vet jag ju inte så noga men det blir ju så klart långsammare och tar upp mer minne än med objektet.

 

Sedan beror ju det hela på antalet användare. Om vi räknar med att du sammalagt sparar 50 byte i sessions variabeln och har 1000 samtidiga användare så blir minnet som IIS håller stat i onekligen minst 50 kByte.

 

MH

>> Jonas

 

Länk till kommentar
Dela på andra webbplatser

Hej,

 

Vill bara påpeka att det är stor skillnad på COM objekt och små java/vb-script object.

 

COM object bör du inte lagra i sessionsobjektet, eftersom det tar mycket minne och kraft för att hantera dessa. Dessutom blir de ju inte stateless vilket man oftast vill att de skall vara.

 

Ditt javascript objekt passar utmärkt att spara i sessionsobjektet. Det är ändå bara en pekare som sparas där. Du kan numera skapa egna objekt i VBScript om du kör den senaste versionen.

 

/foo

 

 

Länk till kommentar
Dela på andra webbplatser

Gunnar Liljas

.....men man kan inte placera dem i Session. VBScript-klasser lever bara lika länge som sidan, eftersom sessions-hanteringen inte vet hur objektet ska serialiseras.

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...