| Ultimo messaggio | 3 pagine: [1] 2 3 Avanti >>
DAL e Code Generators
hiram
hiram non è online. Ultima attività: 19/03/2009 3.25.42hiram
il 9 novembre 2006 alle 02:56
58 messaggi dal 11 maggio 2006
Ciao a tutti,

Data access layer... Generarlo da soli, costruendosi tutte le classi a mano, o appoggiarsi a Code Generators, ORM, o Class persister...

Fino ad adesso ho approfondito i seguenti metodi:

1 - Classi fatte a mano, o quasi...
Da quando ho inziato a programmare DAL per database conteneti più di qualche tavola, ho cercato di risparmiare tempo nello scrivere codice, inizialmente ignoravo l'esistenza dei succitati tools di sviluppo e così mi sono inventato con un foglio xls una sorta di generatore di classi, inserivo i campi ed i tipi e ne tiravo fuori una classe per una data tabella con i classici metodi:
New(), SelectId, SelectAll, Insert, Update, Delete, Query, Transactions...
E così sono andato avanti per molto tempo...

2 - Poi ho iniziato studiare l'utilizzo di ORM e CodeGenerators...
Fondamentalmente spinto dalla convinzione di non dover reinventare la ruota e dalla convinzione che esistessero DAL precostituiti (Template) un po più complessi ma molto più potenti delle mie classi, ho iniziato a studiare diverse alternative...

LLBL Gen Pro 2
Lo considero un degno concorrente di CodeSmith, come Code Generator è uguale, ma ha una migliore gestione delle Classi.

Code Smith ed netTiers
Sicuramente, prima di LLBL Gen il migliore Code Generator, a mio parere ...

DataObject
Logica innovativa, ma eccessivamente rivoluzinaria, si perde completamente il controllo del Database, pensa a tutto lui, tu crei la classe... lui le tabelle... davvero eccessivo per il mio carattere, anche se nella categoria lo giudico il migliore.

Nhibernate
Buono, ma non mi piace il mapping esterno... e per questo non lo ho mai approfondito...

3 - Iniziando ad utilizzarne alcuni ho riscontrato che...
Molti includono funzioni ed helper molto complessi... ma talvolta rasentano il paradosso... "per non scrivere una query sql" con una stringa costruita da codice in base alle esigenze, si sono inventati il termine "Dynamic query Sql" ed un modello tipizzato di relazioni, operatori, etc.. etc...
Forse è quasi più lungo rispetto al mio vecchio sistema "xls based" :) lol

4 - Ritorno alle origini...
Non scriverei MAI le mie classi DAL a mano per una marea di buone ragioni, a mio modo di vedere le cose... (Inutile dispendio di tempo, facilità di commettere errori). -> La possibilità di generare codice partendo da una Tabella & template con un qualsivoglia strumento è una gran cosa!!!

MA... vale la pena utilizzare strumenti / template molto più complessi...???

Cosa deve fare un DAL per essere considerabile COMPLETO :
New(), SelectId, SelectAll, Insert, Update, Delete, Query, Transactions...
Di cosa bisogna tenere conto nello sviluppo di un buon DAL???

Questa è stata la mia esperienza...

Mi farebbe molto piacere sapere la vostra in merito...

Un salutone a tutti...
Re: DAL e Code Generators
nostromo
nostromo non è online. Ultima attività: 09/02/2010 11.49.13nostromo Top Poster
il 9 novembre 2006 alle 09:47
se esistesse una risposta unica non ci sarebberò così tante soluzioni.

quindi tutto dipende da risultati e obbiettivi.

la risposta su cosa deve fare un buon DAL è semplice persistere i dati.

su cosa poi vada inserito nel DAL identityMap, UnitOFWork, lazyLoad o vada da altre parti è un discorso complesso.

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
Re: DAL e Code Generators
imperugo
imperugo è online. Ultima attività: 09/02/2010 19.41.57imperugo Top Poster
il 9 novembre 2006 alle 09:49
Urka argomentone, potrebbe diventare una discussione molto lunga...
Io personalmente i non uso generatori di codice lo faccio a mano oppure uso un ORM tipo NHibernate.
Per valutare la scelta da prendere devi analizzare diversi aspetti, costi, tempi, performance, ecc.

Personalmente ritengo che con NH (secondo me è ottimo), hai un risparmio notevole di tempi e il rischio di possibili errori si riduce drasticamente. È anche vero che non mi piace fossilizzarmi sulle cose, ossia bellissimo NH, ma lo uso veramente poco, perchè devo ben capire quello che c'è sotto e perchè delle cose mi piace farmele a manazza, ma questo forse è un problema mio.

Sulle performance di NH, non parlo perchè è performantissimo, poi se la gente mi viene a dire guarda ho 5000 utenti collegati in contemporanea e NH non lo posso usare perchè è lento, la gente dice una cosa non vera perchè in quel momento il tuo problema non è NH, ma la banda ed il server che deve gestire un carico del genere.
La dimostrazione la hai andando a vedere chi utilizza NH.

Ora passando al piatto forte, ossia su cosa deve contenere un buon DAL non si può che non mensionare Martin Fowler (http://www.martinfowler.com/) che nel suo libro più famoso PoEAA (Patterns of Enterprice Application Architecture http://www.martinfowler.com/books.html#eaa) spiega la sua e mostra i pattern più adatti per far si che un DAL, o meglio un'Applicazione Enterprice dovrebbe avere, quindi : Unit Of Work, Lazy Load, Identity Map, Special Case, ... ed in più deve poter gestire correttamente un cuncurrency che è il problema principale delle grandi applicazioni.

Ora il lavoro di implementazione di tutta sta roba è veramente tanto se si pensa di farlo a mano, NH lo ha integrato di suo, ma puoi vedere un esempio pratico della sua implementazione guardando NSK (Northwind Starter Kit http://www.codeplex.com/NSK) in modo da renderti conto della situazione (ovviamente se non lo hai già visto :-) ).

Cmq lì c'è tutto quello che dovrebbe esserci, ma prima di realizzare una roba del genere devi fare delle scelte ponderate, ossia valutare bene che tutto quello che c'è lì è realmente tutto quello che ti serve, sarebbe stupido realizzare un'applicazione sviluppata in quel modo per far vedere le foto della vacanza !!! (forse l'esempio non calza proprio però mi hai capito).
Per altre question sono qui.

imperugo
Microsoft MVP
myblog : http://imperugo.tostring.it
Re: DAL e Code Generators
m.casati
m.casati non è online. Ultima attività: 08/02/2010 22.13.13m.casati Top Poster
il 9 novembre 2006 alle 10:56
Contributi | www.guru4.net | Blog | 2.563 messaggi dal 13 giugno 2001
Tendenzialmente concordo con Imperugo.
Personalmente ho lo stesso problema: mi piace avere il pieno controllo del codice che eseguo e con NH o simili questa cosa un po' si perde...

Io ho un mio dal generator: inizialmente come te ero partito da xml + xsl poi sono passato a NVelocity che mi semplifica un po' la creazione/modifica dei templates. Devo anche dire che le partial class di 2.0 sono un grosso vantaggio: le classi auto-generate sono partial, ed eventuali metodi extra (una select per una chiave particolare, una update di un solo campo, ecc.) me li gestisco a mano in un file esterno (così posso rigenerare tutto senza rischiare di perdermi nulla)

IMHO questo è il compromesso migliore: ti eviti il lavoro noioso e ripetitivo (fonte di errori) ottendendo però lo stesso codice che avresti scritto a mano, lasciandoti così aperta la possibilità di personalizzartelo, estenderlo, debuggarlo, ecc. senza troppi problemi (è "roba" tua e si presuppone che tu la conosca come le tue tasche)

Di certo ORM più evoluti fanno risparmiare ulteriore tempo ma... non fanno per me (definirmi programmatore scrivendo solo dei file di mapping e qualche UI mi fa un po' sorridere...)

Matteo Casati
GURU4.net
Re: DAL e Code Generators
nostromo
nostromo non è online. Ultima attività: 09/02/2010 11.49.13nostromo Top Poster
il 9 novembre 2006 alle 11:05
m.casati ha scritto:
definirmi programmatore scrivendo solo dei file di mapping e qualche UI mi fa un po' sorridere...


parole santuzze


scrivere un DAL non è mai una cosa definitiva e adagiarsi sulla "zuppa bella che pronta" non fa per me, è vero che la ruota non deve essere sempre reinventata, ma siamo informatici non gommisti.


ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
Re: DAL e Code Generators
imperugo
imperugo è online. Ultima attività: 09/02/2010 19.41.57imperugo Top Poster
il 9 novembre 2006 alle 11:46
definirmi programmatore scrivendo solo dei file di
mapping e qualche UI mi fa un po' sorridere...

LOL, anche tu hai ragione.

Ma non va trascurata una cosa, la scelta su NH va presa anche in base al cliente e le sue richieste, il prezzo deve essere proporzionale allo sforzo, detto in parole umane:
Se me paga bè allora faccio tutto a manazza, sennò nisba e uso NH , come si dice in questi casi "buono si ma stupido no!!!"

Rimango sempre per l'idea che preferisco farlo a mano, ma è solo una consideraizone mia, però lo sforzo (notevole) deve essere retribuito adeguatamente.
ciao raga

imperugo
Microsoft MVP
myblog : http://imperugo.tostring.it
Re: DAL e Code Generators
hiram
hiram non è online. Ultima attività: 19/03/2009 3.25.42hiram
il 9 novembre 2006 alle 12:39
58 messaggi dal 11 maggio 2006
definirmi programmatore scrivendo solo dei file di
mapping e qualche UI mi fa un po' sorridere...


Se fosse così concorderei pienamente con voi tutti...

Vi vedo tutti molto addentrati su NHibernate, ma nessuno sina ad adesso ha espresso pareri su Tools tipo LLBLGEn e CodeSmith, questi è vero che includono già dei template predefiniti...

MA è anche vero che PUOI CREARNE DEI TUOI!

Ed allora non penso che il problema di un programmatore sia di scrivere lo stesso codice 150 volte per le varie tabelle, ma bensì di scrivere codice efficente cercando di essere molto produttivi, la soluzione tutto a mano è da masochisti, naturalmente se paragonata ad:

a mano mi scrivo i template e li utilizzo con i suddetti tools per implementarli laddove serve, questo secondo me fa contenti tutti... lol

Ed allora il problema è:

1 - Quale è il template / code generator migliore?
E qui se la battono CodeSMith e LLBLGen
Che non hanno a che vedere con NH.

2 - E se si volesse implemetare i loro template...
Quali sono i template migliori???
E qui allargherei la scelta a NH, che forse ha un buon DAL,
Ma lì davvero siparla di una zuppa pronta,
NH non implementa Template generators ?!?

A chi invece volesse comunque buttare un occhio su qualcosa di diverso rispetto a nhibernate, consiglio questo libro, si scarica gratis, ed è in pdf:
Rapid C# Windows DEVELOPMENT
Visual Studio 2005, SQL Server 2005 & LLBLGen Pro
di Joseph Chancellor
www.lulu.com/josephchancellor

Fatemi sapere...
Re: DAL e Code Generators
fabrica
fabrica non è online. Ultima attività: 08/02/2010 12.46.04fabrica Top Poster
il 9 novembre 2006 alle 12:40
www.fabricasoft.net | 1.565 messaggi dal 03 dicembre 2001
Ciao a tutti,

personalmente mi sono costruito un DAL davvero molto semplice ed efficace.

Principalmente si basa sull'utilizzo delle interfacce fornite per l'accesso e la gestione dei dati e l'utilizzo di semplicissime query eseguite in db che altro non fanno che restituire la struttura delle tabelle e i tipi.
Per sqlserver le query principali sono:
select * from information_schema.tables
//ottengo tutte le tabelle e le viste

select * from information_schema.columns where table_name = 'table_name'
//Ottengo l'oggetto vero e proprio (Classe),i suoi tipi, la posizione ordinale,is_nullable e molti altri dati
Fatto questo è molto semplice generare il DAL passare tutto al compilatore e avere a disposizione una dll che "rimappa" perfettamente il nostro db.

Con l'introduzione dei generics la gestione delle collection è stata "ovviamente" semplificata.

Fabrizio Canevali

cit. "Io speriamo che me la cavo."

3 pagine: [1] 2 3 Avanti >>  

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.
COMMUNITY
ULTIMI MESSAGGI
UTENTI ONLINE
MEDIA
IN EVIDENZA
MISC
Powered by .db Forums "Caesar Reborn" v. 2010.2.8