LINQ To SQL vs NHibernate

Durante il mio viaggio nel mondo degli ORM mi sto soffermando molto su LINQ To SQL e NHibernate e come strutturare un 3Tier con questi. NHibernate è tutt'altra bestia e come sappiamo tutti è infinitamente più potente rispetto a LINQ To SQL e rende lo sviluppo con Persistence Ignorance assolutamente semplice. Tuttavia, ci sono comunque delle cose che mi fanno preferire LINQ To SQL per molti scenari.

E-Commerce: un tipo di applicazione come questa necessita di query che vanno per il 95% a consultare il database e per il restante 5% a scrivere. Applicazioni del genere hanno un modello ad oggetti abbastanza semplice e non hanno bisogno di meccanismi di persistenza troppo complessi perchè spesso gli oggetti hanno un mapping 1:1 con le tabelle del db. In questi casi non scomoderei mai NHibernate perchè sarebbe come sparare con un cannone per colpire una zanzara, mentre LINQ To SQL esprime il suo massimo potenziale in questi scenari.

Community: una community ha forum, blog, articoli, script tutti riconducibili ad un modello a oggetti anche qui estremamente semplice. Ad esempio, un articolo ed un post sul forum o su un blog hanno molto in comune (Autore, data, soggetto, testo, ecc). Anche qui, vale lo stesso discorso per la categoria precedente meglio LINQ To SQL.

Gestionali: qui il discorso si complica; con questi tipi di applicazione e con l'avvento di ajax capita spesso che si possano creare maschere con tantissimi dati dentro ed un commit finale che deve persistere grafi complessi. In questo caso la scelta tra uno o l'altro dipende da quanto il mapping 1:1 imposto da LINQ To SQL sia accettabile. Io opterei per NHibernate quando la cosa è troppo gravosa mentre in altri casi LINQ To SQL è un'ottima scelta.

Le considerazioni che ho fatto, ovviamente, tengono conto solo delle problematiche relative al mapping senza tenere in considerazione prestazioni, tipo di database, supporto degli editor, ed altro ancora.

Detto questo, viva LINQ To SQL viva NHibernate, viva il mapping manuale, viva le applicazioni che funzionano :D.

Stay tuned...

Nella stessa categoria

Commenti
andysal scrive:
LINQ To SQL vs NHibernate

Io penso che la scelta dell'uno o dell'altro sia da effettuare in funzione delle scelte architetturali: se la scelta è ricaduta su Active Record, Linq 2 SQL o CastleProject sono, ovviamente, la scelta "naturale". NH, invece, è un O/RM e quindi è orientato alla persistenza di un Domain Model. Ne avevo parlato qui: http://blogs.ugidotnet.org/pape/archive/2007/06/12/linqvslinq.aspx

Modificato da andysal il 25 novembre 2007 23.03 -
25/11/2007 ore 23.00
ITHost scrive:
Re: LINQ To SQL vs NHibernate

Detto questo, viva LINQ To SQL viva NHibernate, viva il mapping manuale, viva le applicazioni che funzionano  .

LOL
Quando si dice politically correct
Non è che hai ambizioni politiche?
25/11/2007 ore 20.22 | 1 risposta
»»»» SM15455 scrive:
Re: LINQ To SQL vs NHibernate

Risposta Seria:

Non è questione di politically correct, è questione che se uno scrive un'applicazione che funziona e va a dovere per me può scriverla anche in COBOL; basta che soddisfi cliente e produttore e tutto è a posto.

Risposta mia:

Mi consenta... tra poco scenderò in politica con il mio nuovo motto, "chiù pilo pe tutti"
25/11/2007 ore 20.44

Per inserire un commento, devi registrarti alla nostra community.

© 1998-2008 - SMWorld.NET - Il blog di Stefano Mostarda

TagCloud
BLOG INFO
  • Post: 118
  • Commenti: 66
  • TrackBacks: 19
  • Feed blog e contenuti tecnici: RSS
  • Feed blog: RSS Atom OPML

MVP
CATEGORIE
I PIÙ LETTI DEL MESE
IN EVIDENZA