AntonioGanci

Il blog di Antonio Ganci
posts - 201, comments - 420, trackbacks - 31

Il mio feedback sui community days

Ho partecipato alla track extreme. Complimenti siete stati tutti molto professionali. Ve la siete cavata molto bene nonostante i crash di Virtual PC per Lorenzo Barbieri e il portatile di fortuna di Riccardo Golia .

Complimenti anche ad Andrea Saltarello per la sua chiarezza espositiva.

Vorrei portare il mio contributo sul Lazy Load introdotto nella sessione Real world .NET architectures.

Analizziamo il caso della classe LazyLoadedEmployee:

 
 internal sealed class LazyLoadedEmployee : Employee
 {
   public override string Notes
   {
     get
     {
       EmployeeDataProvider dataProvider = new EmployeeDataProvider();
       return dataProvider.GetNotesById(this.Id);
     }
     set
     {
       base.Notes = value;
     }
   }
 }

Quando utilizzo la property Notes, mi aspetto che la sua esecuzione sia istantanea e abbia un costo di esecuzione paragonabile alla lettura del valore di una variabile locale. Meno ancora mi aspetto che possa sollevare un eccezione, invece in questo caso la prima volta che viene letta viene fatto un accesso al database.

Questo lo dico per esperienza sul nostro dal aziendale perchè capita di utilizzare una property senza accorgersi del lavoro che viene fatto dietro. La mia proposta è quella di sostituire la property con un metodo Es: (GetNotes o LoadNotes), infatti, mi viene naturale pensare che un metodo possa sollevare un eccezione e che possa avere un costo di esecuzione non trascurabile.

powered by IMHO 1.3

Print | posted on venerdì 14 aprile 2006 19:25 |

Feedback

Gravatar

# re: Il mio feedback sui community days

Mah.. si può anche pensare di effettuare il caching dell'oggetto, in modo da rendere lunga solo la prima esecuzione.
Piuttosto a me non piace l'idea di essere costretto ad avere una proprietà virtuale sul mio domain model, che di fatto mi permette di utilizzare il lazy load solo dove espressamente previsto. Preferisco di più l'utilizzo di una classe Proxy, alla hibernate per capirci.
14/04/2006 19:33 | Marco De Sanctis
Gravatar

# re: Il mio feedback sui community days

Anche in questo caso è lunga solo alla prima esecuzione, però metti il caso che nel momento in cui leggi Notes il db è sovraccarico, la chiamata potrebbe impiegarci molto tempo, oppure metti il caso che il server sia andato giù, ecc.
La mia è una proposta per una maggiore chiarezza d'uso della classe.
14/04/2006 19:43 | Antonio Ganci
Gravatar

# re: Il mio feedback sui community days

Sono daccordo sul concetto che caricare tutto subito non sia sempre la scelta migliore ed infatti ho utilizzato diverse volte questa tecnica.
Volevo sottolineare l'uso a mio avviso un pò improprio che a volte si fa delle proterty, chiaramente la mia non è legge ;-) è solo una riflessione.
Se nel team si è tutti daccordo non ci trovo nulla di male ad usare il lazy load.
14/04/2006 20:06 | Antonio Ganci
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET