Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Class_Initialize e Class_Terminate

    Salve a tutti, vorrei porvi un quesito sulla distruzione degli oggetti in asp.
    Un documento trovato online ad un certo punto dice:

    letting IIS destroy the object when the variable goes out of scope
    Ma se io volessi avere il completo controllo sulla distruzione degli oggetti per poterli distruggerli manualmente con set MyObj = nothing ? sarebbe fattibile?

    Perchè voglio fare questo?
    Perchè vorrei ottimizzare l'applicazione e cioè inizializzare tutti gli oggetti necessari solo alla prima richiesta dell'applicazione e liberare la memoria dopo un certo periodo di inattività da parte dell'utente..

    Grazie in anticipo
    klamis.it Il primo socialnetwork per chi ama le figurine

  2. #2
    Ciao,

    Hai dato pochi elementi per avere un'idea chiara di quello che vuoi. Quella frase estrapolata dal contesto in cui è calata può assumere significati diversi.
    In generale è fortemente consigliato provvedere alla distruzione degli oggetti appena non più necessari (=nothing).

    Le sub che citi nel titolo, Class_Initialize e Class_Terminate sono specifiche delle classi e sono rispettivamente il costruttore e il decostruttore della classe.
    Come le vuoi inserire in quello che stai chiedendo?

    xxx

  3. #3
    Forse con un esempio riesco a spiegarmi meglio:

    la mia default.asp
    codice:
    <%
    	call cUt.Main()
    	cUtente.saluta()
    %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" lang="it" xml:lang="it">
    <head>
    <title>Title</title>
    </head>
    <body>
    
    </body>
    </html>
    <%
    	'call cUt.Clear()
    %>
    config.inc.asp
    codice:
    <%@ CodePage = 1252 %>
    
    
    
    
    
    
    
    <%
    	Dim cUtente : cUtente = ""
    	Dim cSezione : cSezione = ""
    	Dim cLog : cLog = ""
    	Dim cAtto : cAtto = ""
    	Dim cAllegato : cAllegato = ""
    	set cUt = new cUtility
    %>
    Nella mia default ho il metodo: call cUt.Main() della classe cUtility che è di seguito descritto:
    codice:
    Sub Main()
    		Server.ScriptTimeout = 1200
    		Session.timeout = 300
    
    		With Response	
    			.Buffer = True
    			.Expires = -1500 
    			.ExpiresAbsolute = now()-1500
    			.Addheader "pragma","no-cache"
    			.Addheader "cache-control", "private"
    			.Cachecontrol = "no-cache"
    			.AddHeader "P3P","CP=""NON DSP COR CURa ADMa DEVa TAIa OUR BUS IND UNI COM NAV STA"""
    		End With
    		
    		Set cUtente = new cUtenti
    		Set cSezione = new cSezioni
    		Set cLog = new cLogs
    		Set cAtto = new cAtti
    		Set cAllegato = new cAllegati
    
    		Set cDP = new cDataProvider
    		cUtente.SetCdp = cDP
    		cSezione.SetCdp = cDP
    		cLog.SetCdp = cDP
    		cAtto.SetCdp = cDP
    		cAllegato.SetCdp = cDP
    
    	end Sub
    Questo metodo, come si vede, inizializza gli oggetti cUtente, cSezione, cLog ecc ecc, inizializza l'oggetto cDP e lo passa alle classi; cDP rappresenta il dataprovider utilizzato poi dalle classi per fare altre cose che ora non ci interessano.

    La mia domanda è la seguente:
    Perchè gli oggetti inizializzati nella sub main devono essere inizializzati ad ogni richiesta all'applicazione? non sarebbe più ottimale inizializzare tutti gli oggetti solo alla prima richiesta e tenerli attivi per ogni richiesta senza reinizializzarli ad ogni richiesta?
    klamis.it Il primo socialnetwork per chi ama le figurine

  4. #4
    Cosiderato che ogni pagina ha una vita a se la procedura corretta è inizializzare e distruggere ogni oggetto all'interno della stessa (non vedo il Set .. = nothing nel tuo codice per gli oggetti istanziati).

    Avendo ogni pagina una vita sua non è possibile trasportarli da una pagina all'altra, considerato che inserirli in session/application è sconsigliato dalla stessa microsoft.

    Ergo devi crearli/distruggerli ad ogni chiamata della pagina.
    xxx

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.