It is currently 22 April 2025, 20:35 Advanced search

io vs proliferazione imdb

Domande e risposte su come utilizzare Instant Developer Foundation al meglio

io vs proliferazione imdb

Postby r.bianco » 17 September 2013, 9:28

Nell'applicazione che stiamo sviluppando facciamo largo uso di tabelle IMDB, principalmente per: pannelli che mostano dati elaborati, report che prendono i dati da tabelle diverse in base a paramentro, pannelli per selezione (imdb monoriga). Ad oggi ne abbiamo 29, tempo un anno saranno 290.
Vorrei evitare questa incontrollata proliferazione e l'unica soluzione che mi viene in mente è il riutilizzo di tabelle IMDB simili in pannelli diversi, ma mi scontro con il fatto che, se l'utente apre due maschere che utilizzano la stessa IMDB, i dati gli cambiano sotto il naso senza che nemmeno se ne accorga.

Qualcun'altro ha affrontato il problema? Con quali idee?
only work and no play makes jack a dull boy
r.bianco
 
Posts: 4962
Joined: 8 November 2010, 16:46

Re: io vs proliferazione imdb

Postby eurekapv » 17 September 2013, 10:13

Beh non sono poche direi 290 tabelle IMDB che vanno poi moltiplicate per il numero di utenti attivi.

invece della IMDB multiriga, in certi casi, io preferisco crearmi una classe ad hoc ed utilizzare la sua IDCollection da mostrare nei pannelli o comunque manipolare da codice.

Pietro
Alchimisti Lab by Cavallini Pietro
https://www.alchimistilab.it

Image
User avatar
eurekapv
 
Posts: 2450
Joined: 2 November 2010, 22:16
Location: Vigevano

Re: io vs proliferazione imdb

Postby r.bianco » 17 September 2013, 11:52

Interessante. Grazie.
only work and no play makes jack a dull boy
r.bianco
 
Posts: 4962
Joined: 8 November 2010, 16:46

Re: io vs proliferazione imdb

Postby lucabaldini » 17 September 2013, 14:47

Potresti anche raggrupparle nelle videate in cui vengono utilizzate... in questo modo rimangono ordinate.

Fai, però, attenzione ad una cosa... Le tabelle IMDB contenute nelle videate non "muoiono" con le videate ma muoiono solo con lo scadere della sessione.

Io faccio così: se uso una tabella IMDB per mostrare i dati in una videata, nell'evento Unload la svuoto... altrimenti occupa memoria inutilmente per tutta la sessione.
Sarebbe come popolare un'array globale di oggetti che non servono più se non quando apri quella particolare videata.

Prova a pensare cosa succederebbe se in una delle tue 290 tabelle IMDB inserissi un milione di record all'avvio della sessione. Ciascun utente conserverebbe quella memoria per tutta la sessione... e probabilmente potresti avere problemi di memoria lato server.

Non lo faccio sempre... ma se so che una tabella IMDB può contenere tante righe, la svuoto.
User avatar
lucabaldini
Pro Gamma
Pro Gamma
 
Posts: 4990
Joined: 1 October 2010, 17:03
Location: Bologna

Re: io vs proliferazione imdb

Postby r.bianco » 17 September 2013, 15:16

è un'abitudine consolidata :)
only work and no play makes jack a dull boy
r.bianco
 
Posts: 4962
Joined: 8 November 2010, 16:46

Re: io vs proliferazione imdb

Postby lucabaldini » 17 September 2013, 15:20

Perfetto! :-)
User avatar
lucabaldini
Pro Gamma
Pro Gamma
 
Posts: 4990
Joined: 1 October 2010, 17:03
Location: Bologna

Re: io vs proliferazione imdb

Postby r.bianco » 18 September 2013, 14:36

Ho adottato l'idea gentilmente offerta da eurekapv e, fino ad ora, sono molto soddisfatto. Ho creato una videata con un pannello di filtro ed un report, entrambi si basano su una classe DO non associata ad alcuna tabella. In base alla prima classe popolo una collection della seconda e la assoccio al report, et voilà: tutto fila liscio.
Adesso mi chiedo: una volta chiusa la videata, la memoria occupata dalle istanze delle classi viene svuotata, oppure devo occuparmene io come le IMDB?
only work and no play makes jack a dull boy
r.bianco
 
Posts: 4962
Joined: 8 November 2010, 16:46

Re: io vs proliferazione imdb

Postby lucabaldini » 19 September 2013, 7:04

Solo le tabelle IMDB sono "sempre globali anche se contenute nelle videate" poiché "appartengono" al DB in memoria che è un'oggetto globale. Appartenendo a quell'oggetto globale il Garbage Collector non le colleziona mai fino al termine della sessione utente.

Le istanze di documenti di videata, invece, sono appartenenti alle videate. Quando la videata viene chiusa, l'istanza della videata viene liberata ed il GC libera la memoria. Lo stesso succede a tutte le variabili locali alla videata che, quindi, vengono liberate alla chiusura della videata.
User avatar
lucabaldini
Pro Gamma
Pro Gamma
 
Posts: 4990
Joined: 1 October 2010, 17:03
Location: Bologna

Re: io vs proliferazione imdb

Postby r.bianco » 19 September 2013, 7:25

Perfetto, grazie mille ad entrambi.
only work and no play makes jack a dull boy
r.bianco
 
Posts: 4962
Joined: 8 November 2010, 16:46


Return to Tips & Tricks - Foundation

Who is online

Users browsing this forum: Google [Bot] and 70 guests