...E' evidente (ma lo sapevo :-) ). Da anni sostengo che i pattern non siano nè dogmi nè "la Forza", ma li paragono alle centurie di Nostradamus, poichè vanno interpretati. Chiunque, a partire dal famigerato workshop "Architecture & Management" di dicembre 2004, mi abbia sentito parlare di questo argomento si è "beccato" (e si sarà stufato, presumibilmente) di questa mia affermazione. Citando Fowler (non per "amore", bensì perchè dobbiamo pur basarci su una definizione), "the essence of an Active Record is a Domain Model in which the classes match very closely to the record structure of an underlying database". *Chi* o *cosa* effettui la persistenza non è determinante, poichè la capacità degli oggetti definiti in AR di "autopersistersi" è una caratteristica che (sempre stando a Fowler) è *tipicamente* (concetto differente da "sempre") implementata.
Poichè attribuire un significato "universale" alle espressioni "very closely" e "tipically" avrebbe una difficoltà, come dice un mio amico, pari solamente a quella di capire le donne, ho sempre definito AR come "il miglior object model che siamo in grado di far emergere dal database". Ovviamente, escludendo le implementazioni "manuali", il toolkit utilizzato è determinante il tal senso: Linq to SQL ha (ad esempio) un limitato supporto alla ereditarietà e capacità di mapping via xml, mentre CastleProject supporta i component, potendosi basare sull'engine di NHibernate. Entrambi permettono di modificare la struttura del grafo rispetto a quella del DB, quindi a voler essere fiscali dovremmo dire che entrambi non sono AR, ma... Mi sembrerebbe una tesi difficilmente sostenibile. Entrambi (meno male!) offrono ben di più del "minimo sindacale" previsto da AR, ma non mi sembrano paragonabili a NH o a EF.
Technorati Tags: active record, castle project, linq to sql, nhibernate, O/RM, software architecture
posted @ lunedì 26 novembre 2007 17:24