Dataset vs Domain Model: dove pende l'ago della bilancia?

Dataset vs Domain Model: dove pende l'ago della bilancia?

dipende...come rifletteva giustamente Marco...
se una persona ha come strumento il framework .NET e basta,
effettivamente tutti gli spunti hanno senso...

ma facciamo un giochino, una piccola aggiunta,
e invece di fare
DomainModel vs Dataset
proviamo a fare
DomainModel & NHibernate vs Dataset.

Riassumiamo e mettiamo in croce gli spunti di riflessione
Punti a favore del dataset espressi da Marco:
Domain Model con NHibernate
il dataset essendo basato su un Table Model è direttamente mappato sulla struttura del db, invece con il Domain Model avremmo bisogno di un Data Mapper che non è così facile da implementare NHibernate implementa il Data Mapper. :-) 
In questo modo con il domain model non mi faccio fuori polimorfismo, ereditarietà e dulcis in fundo ValueObject e Composite, tutte caratteristiche che non ho con i dataset. 
l'integrazione del DataSet nell'IDE di Visual Studio e la struttura estremamente versatile, permettono di gestire facilmente anche strutture piuttosto complesse, che coinvolgono DataRelation e campi calcolati Un campo calcolato nel domain model è semplicemente una property da aggiungere alla classe.
il DataSet funziona particolarmente bene con il DataBinding, implementando diverse funzionalità non banali Nel fwk 1.1 bastava una collection fatta bene che implementasse le giuste interfaccie, scritta una volta per tutte e riutilizzabile per tutti i progetti.
Si poteva usare la custom collection come fosse un dataset, strongly typed a design time ect..
Nei miei progetti lavoro tranquillamente anche con controlli complessi in databinding complesso bidirezionale, e non ho mai sentito la necessità di un dataset....(meno male!)
Adesso nella 2.0 c'è BindingList<T> che semplifica ancora il lavoro...
perché ci si può avvalere di generatori di codice che risparmiano parecchio lavoro (usare questi strumenti per un Domain Model, a mio modo di vedere, è un controsenso allucinante) Ovviamente è un controsenso. Non si può partire dal db per generare codice. Ma nel caso uno si volesse fare del male, può cmq farlo anche con il domain model e con i generatori di codice che ci sono in giro gratuiti. Otterrebbe classi di dominio tipo Table Model.
Io lo picchierei con il randello ma questa è un altra storia...:-)
perché con l'accoppiata DataSet/DataAdapter ci troviamo gratis anche un bel Unit of Work e un Optimistic Offline Lock per gestire opportunamente le modifiche effettuate in locale. Questa è quella che preferisco:
con Nhibernate (nel solo oggetto session) mi trovo implementato:
DataMapper
UnitOfWork
Optimistic Offline Lock
IdentityMap
e forse anche qualcos'altro...adesso non ricordo :-)

Quindi uno pensa...invece di skillarsi sui ADO.NET disconnesso, mi skillo su NHibernate...:-)

e adesso l'ago della bilancia dove pende? :-P

Ovviamente era (anche) una provocazione...
(fatta da uno che è così tanto "integralista" degli ORM che sta cercando il modo di levare le classi dei dataset dal disco...perchè gli occupano spazio inutile...)

Ciao Marco...Up the irons!

Print | posted on Thursday, March 23, 2006 4:03 PM

Comments on this post

# Lexapro.

Requesting Gravatar...
Lexapro side effects. Celexa lexapro wellbutrin.
Left by Lexapro wean. on Sep 11, 2007 5:11 PM

# Diazepam.

Requesting Gravatar...
Buy diazepam news. Diazepam to lorazepam conversion. Diazepam.
Left by Diazepam. on Jul 15, 2010 9:13 AM

# Lorazepam diazepam.

Requesting Gravatar...
Lorazepam. Effect of lorazepam.
Left by Lorazepam. on Jul 15, 2010 11:43 AM

# Does wellbutrin cause weight gain.

Requesting Gravatar...
Adderall and wellbutrin together. Generic wellbutrin xl. Side effects from taking wellbutrin. Increase in wellbutrin dosage. Effectsof snorting sniffing wellbutrin.
Left by Side effects of wellbutrin. on Jul 16, 2010 5:43 AM

# Clonazepam.

Requesting Gravatar...
Tapering off clonazepam. Clonazepam. Clonazepam side effects.
Left by Clonazepam side effects. on Jul 16, 2010 9:31 AM
Comments have been closed on this topic.