Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    diatriba sulla distruzione degli oggetti creati

    ciao a tutti,
    in ufficio è nata una discussione sulla questione che riguarda la distruzione degli oggetti creati all'interno di una pagina, in special modo connessione e recordset.

    viene creata una connessione per ogni utente all'interno del global.asa sul session onStart e distrutta sul session onEnd, salvata in una variabile di sessione.

    nelle pagine i recordset creati non vengono mai chiusi ne' posti uguali a nothing.

    il punto è: la ram occupata dai rs viene liberata comunque al termine del caricamento della pagina (al di la' del fatto che la chiusura e la liberazione andrebbe sempre fatta)?

    è plausibile gestire la connessione nel modo di cui sopra, considerando che il db sul quale gira l'applicativo è Oracle?

    grazie a chiunque voglia partecipare
    xxx

  2. #2
    in asp classico gli oggetti vanno distrutti. punto.

  3. #3
    Originariamente inviato da optime
    in asp classico gli oggetti vanno distrutti. punto.
    questo è anche il mio punto di vista, quello che mi interesserebbe sapere è cosa comporta la non distruzione.

    potresti darmi il tuo parere anche sulla gestione della connessione?

    ti ringrazio
    xxx

  4. #4
    Utente di HTML.it L'avatar di Baol74
    Registrato dal
    Jul 2002
    Messaggi
    2,004
    Mai mettere oggetti nelle sessioni. Che bisogno c'è?
    Asp supporta una gestione di un massimo di 20 thread contemporanei.
    Questo significa che se entrano 100 utenti le prestazioni del tuo sito saranno compromesse. In asp si apre l'oggetto nella pagina e lo si chiuse appena possibile nella stessa per liberare risorse.
    Tenere attivo un oggetto per lo più connesso in sessione a mio parere ( ma anche microsoft la pensa così, magari ti giro l'articolo ) non è da fare

  5. #5
    Originariamente inviato da Baol74
    Mai mettere oggetti nelle sessioni. Che bisogno c'è?
    Asp supporta una gestione di un massimo di 20 thread contemporanei.
    Questo significa che se entrano 100 utenti le prestazioni del tuo sito saranno compromesse. In asp si apre l'oggetto nella pagina e lo si chiuse appena possibile nella stessa per liberare risorse.
    Tenere attivo un oggetto per lo più connesso in sessione a mio parere ( ma anche microsoft la pensa così, magari ti giro l'articolo ) non è da fare
    se potessi girarmi l'articolo mi faresti un favore grandissimo, ho bisogno di una documentazione per argomentare le mie tesi.

    grazie mille per l'aiuto
    xxx

  6. #6
    Utente di HTML.it L'avatar di Baol74
    Registrato dal
    Jul 2002
    Messaggi
    2,004
    L'articolo dovrebbe essere questo:

    http://www.microsoft.com/italy/msdn/...asp?frame=true

    In particolare il Principio 4 e 10.

    Riporto un passaggio del punto 10

    codice:
    Evitare di memorizzare in Session dei componenti STA (Single-threaded Apartment).
    Un errore che si commette spesso è quello di introdurre troppi oggetti Visual Basic nell'area di validità di Session. 
    L'effetto è quello di limitare l'utente a un singolo thread, annullando così l'utilità di un pool di thread. 
    Degli utenti potenziali verrebbero bloccati da altri utenti in attesa che il thread che ha creato il loro componente diventi disponibile.
    È meglio progettare componenti senza stato che possano essere creati e distrutti da pagina a pagina.

  7. #7
    ti ringrazio molto per l'aiuto, per ora mi congedo.

    alla prossima

    xxx

  8. #8
    riguardo alla gestione della connessione avrei ancora una domanda: ho potuto vedere solo ora il global.asa e ho visto che la connessione non viene salvata in una sessione come detto sopra, ma nel session onStart viene eseguita solamente quest'opearazione:

    DBmanager.Open "FILEDSN=d:\inetpub\dsn\fileDSN.dsn"

    (senza server.createObject)

    questo comporta gli stessi problemi di cui sopra?
    xxx

  9. #9
    Utente di HTML.it L'avatar di Baol74
    Registrato dal
    Jul 2002
    Messaggi
    2,004
    DbManager.Open ???
    E dove viene creato l'oggetto? Deve esistere la creazione da qualche parte.

  10. #10
    Originariamente inviato da Baol74
    DbManager.Open ???
    E dove viene creato l'oggetto? Deve esistere la creazione da qualche parte.
    non essendo abituato ad usare questa formulazione non avevo fatto caso a questo in testa alla pagina:
    codice:
    <OBJECT RUNAT=Server SCOPE=Session ID=DBmanager PROGID="ADODB.Connection">
    </OBJECT>
    in questo caso ho lo stesso problema del lancio di un thread che non viene rilasciato per ogni utente che si collega?
    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.