Questo articolo di MS descrive 4 modi di rappresentare le entità da persistere sul db e farle fluire tra i vari strati:
- valori scalari
- xml senza xsd e poi con xsd
- dataset/datatable con inverion of dipendency
- non tipizzati
- tipizzati
- entità di business
- non crud con inverion of dipendency
- crud (non preferibili alla non-crud)
descrivendo come in base alla situazione scegliere una rappresentazione o l'altra: Progettazione di componenti per l'accesso ai dati e passaggio dei dati da un livello all'altro.
In molti progetti ho trovato le soluzioni 3 e 4.1 adatte (e a volte la 2 e in piccoli ambiti la 1) permettendomi di evitare i costi e la complessità che ha la 4.2. Il principio di inversione delle dipendenze ha il grosso vantaggio di eliminare dipendenze inutili che aumentano lo sforzo nel scrive il codice e modificarlo.
Anche la soluzione mista 3 + 4 mi ha dato molti vantaggi in semplicità, tempo e qualità.
Quando la 4.2 sembra l'ottimale (occhio che l'abitudine porta a preferirla anche per i progetti in cui le 3 e 4 sono preferibili) è il momento di ... lasciar perdere la 4.2 e iniziare a pensare soluzioni ORM come NHibernate facendo due chiacchere con Janky.
Link di approfondimento: