Come mi piace implementare il pattern Identity Map
Cradle non è online. Ultima attività: 12/10/2008 0.30.49Cradle
Inserito il: 19 settembre 2006 09.59
contributi / Community manager / www.codemetropolis.com / Blog / 346 messaggi dal 01 lug 2004 Istalla Microsoft Silverlight!
Ciao Stefano,
secondo me la tua implementazione è probabilmente più vicina al pattern Repositoryhttp://www.martinfowler.com/eaaCatalog/repository.html che alla Identity Map vera e propria. Il compito di quest'ultimo, infatti, è esclusivamente quello di garantire che la database identity e la reference identity coincidano all'interno del medesimo contesto transazionale, non di gestire vari sistemi di ricerca. Per questa ragione, quindi, tante volte basta un semplice dictionary.

Però, ovviamente, resto tuned perché è comunque un discorso molto interessante!!
Microsoft Most Valuable Professional
Re: Come mi piace implementare il pattern Identity Map
SM15455 non è online. Ultima attività: 11/10/2008 8.12.02SM15455
Inserito il: 19 settembre 2006 10.49
contributi / Top Poster / Community manager / Blog / 2608 messaggi dal 06 set 2002 Istalla Microsoft Silverlight!
Ciao,

Forse ti confondi con il Pattern IdentityField http://www.martinfowler.com/eaaCatalog/identityField.html. Il pattern Identity Map serve per assicurare che un solo oggetto sia caricato in memoria e questo è quello che faccio. Il metodo di ricerca mi seve solo per essere in grado di identificare l'oggetto in più modi, ma lo scopo rimane quello.

Byez

Nothing can be born from hartred

Stefano (SM15455) Mostarda
http://blogs.aspitalia.com/SM15455
Rome Italy
Re: Come mi piace implementare il pattern Identity Map
Cradle non è online. Ultima attività: 12/10/2008 0.30.49Cradle
Inserito il: 19 settembre 2006 11.01
contributi / Community manager / www.codemetropolis.com / Blog / 346 messaggi dal 01 lug 2004 Istalla Microsoft Silverlight!
No Stefano, non mi confondevo :)

Assicurare che DB identity e reference identity coincidano vuol dire avere una sola istanza in memoria per riga del db all'interno della stessa transazione: diciamo la stessa cosa!

Ciò che rimarcavo è solo l'introduzione di questi metodi di ricerca, che sono al di fuori delle responsabilità dell'identityMap, che imho dovrebbe permettere ricerche solo per chiave (la quale è un identityField) e che dovrebbe essere estremamente veloce nell'effettuare tali ricerche (e, non ho visto la tua implementazione, ma l'utilizzo di campi NON UNICI come chiavi di ricerca mi fa pensare che tu non possa avvalerti di un dictionary).

Tutto qui! Si fa pour parler!
Microsoft Most Valuable Professional
Re: Come mi piace implementare il pattern Identity Map
SM15455 non è online. Ultima attività: 11/10/2008 8.12.02SM15455
Inserito il: 19 settembre 2006 11.22
contributi / Top Poster / Community manager / Blog / 2608 messaggi dal 06 set 2002 Istalla Microsoft Silverlight!
Se non ti eri confuso chiedo scusa.

I metodi di ricerca mi servono in casi in cui l'oggetto sia ricercato per campi diversi dall'id.
Es. Una persona può essere cercata per id o per codice fiscale. Nel datalayer ho 2 metodi di ricerca FindById e FindByCode. A questo punto gli oggetti già caricati sono si in una lista, ma identificabili per 2 campi a seconda del tipo di ricerca. Ecco il perchè della cosa. Se hai altre vie suggerisci pure

Byez

Nothing can be born from hartred

Stefano (SM15455) Mostarda
http://blogs.aspitalia.com/SM15455
Rome Italy
Re: Come mi piace implementare il pattern Identity Map
Cradle non è online. Ultima attività: 12/10/2008 0.30.49Cradle
Inserito il: 19 settembre 2006 13.05
contributi / Community manager / www.codemetropolis.com / Blog / 346 messaggi dal 01 lug 2004 Istalla Microsoft Silverlight!
Ma figuriamoci, mica servono scuse!! :)

Quello che voglio dire è che la tua necessità non la soddisfi con una IdMap, ma con un altro tipo di oggetto, tutto qui. La IdMap non è una cache, il caching è una sorta di "effetto collaterale", passami il termine.

Supponi tu voglia ricercare le persone che hanno un certo cognome: in uno scenario simile, con IdMap ti assicuri che, una volta recuperati i dati da db, se quella chiave primaria esiste all'interno della IdMap, piuttosto che costruire una nuova istanza, devi aggiornare quella esistente ed includere quest'ultima nella lista di risultati.

Che poi la IdMap non sia ciò che risolve la tua specifica problematica è un altro paio di maniche :)

Ciao Stef, spero di vederti a MI tra un mesetto!
Microsoft Most Valuable Professional
Re: Come mi piace implementare il pattern Identity Map
SM15455 non è online. Ultima attività: 11/10/2008 8.12.02SM15455
Inserito il: 19 settembre 2006 15.00
contributi / Top Poster / Community manager / Blog / 2608 messaggi dal 06 set 2002 Istalla Microsoft Silverlight!
Ciao,

io non ricerco nella idmap le persone con un certo cognome, non ho una PrimaryKey leggo da db e poi le confronto se le ho già nella lista in memoria per evitare il doppio oggetto. Il mio discorso parte prima della query e solo nel caso in cui cerco per una key (e ci possono essere più chiavi per una classe).
Comunque che la IdMap faccia anche da cache è normale, è lo stesso Fowler a dirlo verso la fine della sezione dedicata all'identitymap.

btw, sto lavorando per milano ma venendo da roma ci sono cose che devo sistemare, vedremo...

bye

Nothing can be born from hartred

Stefano (SM15455) Mostarda
http://blogs.aspitalia.com/SM15455
Rome Italy
Re: Come mi piace implementare il pattern Identity Map
Cradle non è online. Ultima attività: 12/10/2008 0.30.49Cradle
Inserito il: 19 settembre 2006 15.10
contributi / Community manager / www.codemetropolis.com / Blog / 346 messaggi dal 01 lug 2004 Istalla Microsoft Silverlight!
Ma se leggi da db e hai già la chiave, che bisogno hai di cercare all'interno della idmap per codicefiscale?

Boh, secondo me non ho capito ciò che dici, mi rendo conto che a chiacchiere e senza codice non è semplice esprimersi su questi concetti.

Vabbé, vorrà dire che aspetterò con curiosità che pubblichi qualcosa :-)

Grazie della piacevole chiacchierata, ciapz!

Vai a:
Torna al forum |   Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.


maltra - 582 pt
vladimiro - 451 pt
PeppeDotNet - 100 pt

Ultimi vincitori: maltra, vladimiro, PeppeDotNet

Iscriviti anche tu e raccogli punti. Questo mese in palio Windows Vista Ultimate, SQL Prompt e 1 ebook!



COMMUNITY
ULTIMI MESSAGGI


IN EVIDENZA
MISC
Powered by .db Forums