Crad's .NET Blog

L'UGIblog di Marco De Sanctis
posts - 190, comments - 457, trackbacks - 70

Quanto è difficile realizzare un DAL

Oggi in Microsoft, dopo la sessione di Andrea, chiacchieravo un po' con il simpaticissimo Janky ed è venuto fuori un concetto che forse a molti sembrerà scontato, ma che spesso non lo è: realizzare un buon Data Access Layer è qualcosa di *dannatamente* complesso. Ma tanto, eh!!

E l'aggravante è che, purtroppo, questa caratteristica è difficilmente identificabile da chi si avvicina per le prime volte alle metodologie di sviluppo object-oriented e all'utilizzo dei patterns (e, OVVIAMENTE, tale categoria comprende anche il sottoscritto): il primo pensiero è che basta buttar giù due query, utilizzare i resultset per costruire entity piuttosto che riempire DataSet ed è tutto fatto.

In realtà, secondo me, non è tutto così semplice: se sviluppo utilizzando un Domain Model, come ho già detto in un post precedente, lo faccio perché la complessità dell'applicazione lo richiede. Ed in questo caso, ad esempio

  • è necessario tener traccia delle modifiche che apporto alla mie entity finché queste sono in memoria (Unit of Work)
  • è necessario caricare i dati solo quando effettivamente ci servono (Lazy Load)
  • è necessario gestire in un certo modo le relazioni master-detail (se ci pensate, non è scontato dire che se dalla collection di dettagli della mia entity Fattura rimuovo un DettaglioFattura , le corrispondenti righe su DB devono essere eliminate, perché questa entity DettaglioFattura a conti fatti non ha subito alcuna modifica)
  • sarebbe bene evitare di restituire diverse istanze della stessa business entity (Identity Map)
  • dobbiamo gestire la concorrenza, il mapping, l'ereditarietà delle classi, ecc.ecc.ecc...

Dove voglio arrivare? Beh, voglio arrivare a dire che, a conti fatti, spesso e volentieri è assolutamente consigliabile avvalersi di un ORM per realizzare un buon DAL (facciamo "quasi necessario"?). Oltre a semplificarci di molto la vita, infatti, ci permettono di apprezzare in anticipo le caratteristiche che ho elencato qualche riga più in alto, imparando a conoscerle, a comprenderne le motivazioni ed evitando magari di renderci conto della loro necessità solo perché, dopo un po' che ci lavoriamo, ci ritroviamo ad avere un DAL fatto a mano che in realtà non funziona bene come ci saremmo aspettati.

powered by IMHO 1.3

Print | posted on venerdì 14 aprile 2006 02:28 | Filed Under [ Architettura ]

Powered by:
Powered By Subtext Powered By ASP.NET