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?