Posts by tag: orm

by in / Entity Framework / Eventi / NHibernate
No peoples think this is good

Web Congress 3.0: Entity Framework 4.0 vs NHibernate, slide e codice

webcongressVenerdì 16 aprile si è svolto a Pordenone l’evento più importante dell’anno organizzato da 1nn0va sulle tecnologie web.
Quest’anno ho avuto l’onore di farne parte come speaker presentando una sessione sull’accesso ai dati via ORM (Object-Relational Mapping) in un paragone tra il veterano NHibernate ed il promettente Entity Framework 4.0 di Microsoft.

Devo dire che Microsoft ha fatto un gran lavoro per colmare il gap che esisteva tra la prima versione dell’Entity Framework e gli altri protagonisti del settore. Una delle caratteristiche più apprezzate della nuova release è la possibilità ora concreta di utilizzare le proprie classi di dominio senza dover necessariamente ereditare dalla classe base EntityObject. La cosa si fa poi ancora più interessante se sfruttiamo il nuovo sistema di template (T4) che ci permette di generare automaticamente dall’Entity Data model (EDM) le classi di dominio in “modalità” POCO (Plain Old CLR Object).

Per chi fosse interessato in fondo al post trova i link per scaricare le slide e la solution di Visual Studio 2010 con tutto il codice sorgente.

L’applicazione di esempio è un semplice blog engine sviluppato in ASP.NET MVC 2.0 con l’obiettivo di separare per quanto possibile la logica di business dalla presentation e dall’accesso ai dati.

solution L’architettura è a quattro livelli ed in particolare:

  • SampleBlog.Web: progetto di tipo ASP.NET MVC 2.0 ovvero il livello di presentazione dei dati
  • SampleBlog.Model: progetto che astrae la parte Model dell’MVC per slegare la logica di dominio dalla presentazione e che contiene le nostre classi POCO
  • SampleBlog.AppServices un Service-Layer che qui gioca un po’ il ruolo del Repository
  • SampleBlog.CommonPersistence: uno dei tre livelli di persistenza, utilizza ADO.NET “Legacy” quindi SqlCommand, SqlDataReader e stored procedure
  • SampleBlog.NHibernatePersistence: utilizza NHibernate e un mapping su file xml
  • SampleBlog.EntityFrameworkPersistence: utilizza Entity Framework però in versione “Persistence Ignorance”, ovvero mappato sulle classi POCO del nostro modello

Il tutto condito con Windsor il framework IoC di Castle Project che permette di scegliere di volta in volta quale progetto di persistenza usare.

Ricordo comunque che l’applicazione è stata realizzata esclusivamente con l’ottica di mostrare l’accesso ai dati tramite Entity Framework ed NHibernate in contrapposizione a quello che normalmente si fa con ADO.NET “Classic”, non prendetela quindi come esempio di architettura a quattro livelli.

Slide e codice dell’evento disponibili per il download:

/ Read Article /