… o era un diamante… scherzi a parte, da un punto di vista tecnologico abbiamo già visto che non è vero che la scelta di un O/RM ci lega per la vita con questo però è essenziale che la scelta di un O/RM sia comunque oculata e ben ponderata rimpiazzarlo non è operazione da un pomeriggio. Nel mio piccolo ho avuto il piacere/dispiacere di avere a che fare con (in ordine alfabetico):
Se devo scegliere un “vincitore”, di che cosa poi non si sa, direi che non ho dubbi punto sicuramente il dito su NHibernate, se invece devo scegliere un bocciato allora direi Entity Framework, su quasi tutta la linea.
Linq to Sql è stata una piacevole sorpresa forse perchè non è un O/RM ma più che altro è un motore di Data Access decisamente evoluto, che non si qualifica, e quindi non pretende di essere, come un O/RM. L2s è un ottimo strumento per costruire un DAL decisamente evoluto, ma resta il fatto che il DAL ve lo dovete costruire.
Ci sono scenari in cui vedrei molto bene l2s perchè la produttività è notevole mentre negli stessi scenari non vedo la stessa produttività in EF che ha tutte le complessità di un O/RM e tutte le magagne di essere un prodotto giovane e probabilmente mal pensato.
NHibernate dal canto suo è una soddisfazione dopo l’altra, abbastanza intuitivo e decisamente semplice da maneggiare, in molti trovano uno scoglio l’assenza del designer (forse l’unico punto forte di EF) ma a me viene da dire che un O/RM è un prodotto complesso che richiede nozioni architetturali abbastanza profonde per saperlo mageggiare bene e, siccome siamo dev, e se abbiamo quelle nozioni, probabimente l’ultimo dei problemi che ci facciamo è scrivere un paio di righe di mapping… che con FluentNHibernate sono diventate un vero giochetto.
EF vanta dalla sua un designer per le strategie di mapping ma purtroppo è un designer decisamente povero e imaturo che supporta solo scenari semplici, non lo vedo quindi come un punto di forza.
Da notare che nella diatriba non prendo assolutamente in considerazione quello che secondo molti, probabilmente la maggioranza, è il vero nocciolo della questione: POCO, questo perchè trovo più importante distinguere tra mio e suo.
NHibernate ha il grosso pregio di lasciarmi usare il mio dominio introducendo dei requisiti veramente minimali, ma sempre requisiti sono quindi se proprio vogliamo dirla tutta mica è POCO, mentre EF/l2s pretendono di usare (e farmi usare) il loro dominio senza nessuna possibilità di appello e questo mi piace decisamente meno, anzi mi piace poco :-)
.m