La lettura di un libro come quello di Martin Fowler (PEAA) è un avvenimento che secondo me segna marcatamente il modo di concepire lo sviluppo di un' applicazione da parte di un programmatore. Alcune persone sono più scettiche, altre più fanatiche, resta il fatto che i concetti espressi rispecchiano problematiche e possibili soluzioni che, data l'elevata complessità, non sono facilmente affrontabili.
Nello sviluppare quindi il mio progetto di tesi, riguardante la gestione di un listino di modelli di elettrodomestici, mi sono detto: vediamo di metter sù un bel sistemino multidb, multi userinterface e con un buon grado di flessibilità. Durante la fase di OOD, sono stato assalito da un senso di frustrazione dovuto alla varietà di soluzioni possibili che lo sviluppatore deve considerare; ma come, ho così tante alternative e mi lamento? Il fatto è che di tutte le alternative possibili, sentivo che solamente un bel Domain Model avrebbe fatto al caso mio...
Da quando mi hanno insegnato la programmazione OO mi hanno sempre inculcato nel capo l'importanza di concetti quali Ereditarietà, Polimorfismo e Incapsulamento; non può il modello il buon vecchio modello relazionale averla vinta influenzando il dominio di analisi.
Seguendo le linee guida indicate da Andrea nei Webcast relativi al software design, ho delineato l' architettura per la mia applicazione. Ho deciso di sviluppare un Custom Dal per sviluppare l'accesso al dato secondo le mie esigenze. Mi sono detto, troppo facile usare un ORM, fa tutto lui... e allora via ad implementare Data Mapper, Unit of Work ,Lazy Loading e Identity Map.
Oggi mi sono detto, perchè non provare ad utilizzare NHibernate. Penso proprio che al momento attuale sia LA soluzione in fatto di mapping; sono d'accordo con coloro che dicono dipende dal contesto ma non c'è verso o si fanno le cose davvero bene oppure le prestazioni e le features che NHibernate offre nativamente spingono sicuramente verso una sua adozione. Configurare un paio di file xml e ritrovarsi le entità magicamente persistite nel Db mi ha fatto quasi commuovere :-)
Penso che nel prossimo progetto più o meno serio che affronterò NHibernate sarà sicuramente la prima soluzione che prenderò in considerazione. La discussione di questa infinira diatriba la lascio molto volentieri ai posteri.