UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET...

76
UGIALT.NET Conference II UGIALT.NET Conference - 14 Giugno 2008

Transcript of UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET...

Page 1: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

UGIALT.NET Conference II

UGIALT.NET Conference - 14 Giugno 2008

Page 2: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Agenda della conference

10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione user stories 11:30 – Prima User Story introduttiva 12:00 – Users Stories 13:30 – Pranzo 14:30 – User Stories cont. 17:30 – Chiusura Lavori e futuro

Page 3: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Sponsor

Page 4: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Introduzione a UGIALT

Page 5: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Agenda

Manifesto Storia Cosa significa ALT.NET Perchè ALT.NET

Page 6: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Manifesto

Sei un dev che usa quello che funziona ma sei sempre alla ricerca di qualcosa di meglio

Tieni d’occhio il resto del mondo per adottare il meglio da ogni community: Open Source, Agile, Java, Ruby, ecc…

Non sei contento del tuo stato attuale. Le cose possono sempre essere migliorarate, codice più elegante e semplice, più manutenibile e di maggiore qualità

Sai che I tools sono importanti, ma non ti portano molto lontano. Sono i principi e la conoscenza che contano. I tool migliori sono quelli che incorporano la conoscenza e incoraggiano I principi (ad. Es. Resharper)

Page 7: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Un po’ di storia

Aprile 2007 – Il termine ALT.NET appare per la prima volta in un post di David Laribee

Ottobre 2007 – Prima ALT.NET Conference ad Austin (TX)

Novembre 2007 – Nasce UGIALT.NET Febbraio 2008 – 1° Conf UGIALT.NET Aprile 2008 – ALT.NET conf a Seattle

Page 8: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Cosa significa ALT

ALT != Alternativo ALT == Avere

Alternative

Page 9: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Perchè ALT.NET

UserGroup tradizionali sono “about technology”

Più importante: Principi base dell’OOP Processi e metodologie di sviluppo Tool Alternativi

Page 10: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Ligthning Talks

Page 11: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Agenda

Agilità (Emanuele DelBono) TDD (Roberto Valenti) Mocking – Rhino (Claudio Maccari) IoC/DI (Simone Busoli) MVC/MVP (Simone Chiaretta) ORM (Matteo Baglini)

Page 12: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Agilità

Emanuele DelBono [email protected]://blog.codiceplastico.com

Page 13: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Le metodologie tradizionali

Page 14: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Agility!

Page 15: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

I tre capisaldi

La femmina

Il danaro

La mortazza

Page 16: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

I tre capisaldi (quelli veri)

Iterazioni

Collaborazione

Adattabilita’

Page 17: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Le persone non strumenti

Page 18: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Software, non documentazione

Page 19: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Il cliente collaborativo

Page 20: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Adattarsi al cambiamento

Page 21: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Perché?

Fornire valore al cliente in breve tempo

Gestire il cambiamento Ridurre il rischio Migliorare la qualità Per divertirsi mentre si lavora!

Page 22: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Cos’è XP?

XP è una metodologia basata su un insieme di pratiche: Whole Team Planning Game Customer Tests Small Releases Simple Design Pair Programming Test Driven Development Design Improvement Continuous Integration Collective Code Ownership Coding Standard Metaphor Sustainable Pace

Page 23: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Cos’è Test Driven Development

Pratica di XP Sviluppo funzionalità guidato dai Test Attività di progettazione :

Red : definire il comportamento atteso con asserzioni

Green : rendere eseguibili con successo i test, le asserzioni sono verificate

Refactor : effettuare refactoring mantenendo verificate asserzioni (eliminare duplicati, design pattern …)

Page 24: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

TDD Mantra

Page 25: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Refactoring

Migliorare il software tramite l’ applicazione di una serie di modifiche interne che non cambiano il comportamento esterno.

Page 26: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Scopo principale del TDD

Non è testare il codice. Aiutare sviluppatori e clienti durante

il processo di sviluppo definendo requisiti non ambigui.

TDD = Design(design emergente)

Page 27: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Velocità sviluppo tradizionale

Page 28: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Tradizionale vs Agile

Page 29: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Benefici

Codice semplice e funzionante (Simple Design Principle) “Simplicity is more complicated than you think. But it’s well worth it” – Ron Jeffries

Codice Testato (Test Behaviour Not Code)

Facilmente manetunibile (Embrace Change)

YAGNI (You Arent Gonna Need It) = No over design

Page 30: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Rhino.Mocks

Claudio MaccariMail: [email protected] Blog (ITA): http://blogs.ugidotnet.org/makkaBlog (ENG): http://testdrivendevelopment.wordpress.com/

Page 31: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Cos’è Rhino.Mocks?

Framework mock object per .net http://www.ayende.com/projects/rhino-m

ocks.aspx Si parla di test… unit testing Ora disponibile versione 3.4

Page 32: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Rende più semplice lo unit testing

Risorse esterne Networks Databases Altri sistemi

Risorse interne Qualsiasi cosa con setup complesso

Legacy code

Fake the hard stuff

Page 33: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Si tratta di interazione

“State based testing” va bene “Interaction based testing” e più

interessante

Objects talking to objects

Page 34: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Struttura di un test con Rhino.Mock

1. Creazione di un mock2. Definizione delle comporamento

atteso3. Esecuzione del codice sotto da

testare4. Verifica delle aspettative5. Asserts addizionali

Page 35: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Basta chiacchiereLets see some code!

Page 36: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Codice da testare

Page 37: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Test usando il mock

Page 38: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Per andare a fondo

Page 39: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Registra e ripeti

La soluzione sta nel mezzo ?

Page 40: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Tipi di mock

Page 41: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Impostare le aspettative (1/2)

Page 42: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Impostare le aspettative (2/2)

Page 43: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Rhino.Mocks … Rocks!

Download http://www.ayende.com/projects/rhino-mocks.a

spx Wiki

http://www.ayende.com/Wiki/ Quick Reference (ottimo documento)

http://www.ayende.com/Wiki/GetFile.aspx?File=Rhino+Mocks+3.3+Quick+Reference.pdf

Page 44: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Q & A

Dopo

Page 45: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Dependency Injection Inversion of Control

Simone Busoli 14/06/2008 - Milano

Page 46: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Di cosa si tratta

Comunemente DI - IoCPrincipi comuni di disegno software

Alta coesione Basso accoppiamento …

Basso accoppiamento Riduzione delle dipendenze tra componenti

software Chi conosce chi?

Risoluzione dipendenze tra componenti

Page 47: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Scenario

Voglio poter registrare le iscrizioni ad un evento Persistere i dettagli dell’iscritto Comunicare se l’iscrizione è andata a

buon fine tramite mailSubscriptionService

EmailService

PersonRepository

Page 48: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Dependency InjectionElevato accoppiamento

SubscriptionService conosce direttamente i dettagli di EmailService e PersonRepository BAD

Page 49: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Dependency InjectionCambiamento di paradigma

Il servizio conosce solo l’interfaccia dei componenti che utilizza GOOD

Page 50: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Dependency Injection

Iniettare dipendenze dall’esterno rende più onerosa l’istanziazione di componenti Necessario conoscere tutte le

dipendenze

Page 51: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Inversion of Control

Hollywood Principle Don’t call us, we will call you!

Vorrei un’istanza di

SubscriptionService

Page 52: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Inversion of Control Container

Entità esterna all’applicazione Configurabile Conosce le dipendenze tra i

componenti ed è in grado di soddisfarle a runtime

IoC ContainerVorrei un’istanza di

SubscriptionService

Istanza completa di tutte le dipendenze

Page 53: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Windsor Container

Inversion of Control container open source

Stabile – production ready

Si configura il container (xml, boo,

C#)

Si richiede l’istanza di un componente

Il container si occupa di

soddisfare le dipendenze e

creare l’istanza

Page 54: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Windsor ContainerEsempio

Configurazione Xml

Page 55: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Windsor ContainerEsempio

Codice client

Molto meglio, eh? Altri containers

StructureMap Spring.Net Autofac …

Page 56: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Risorse

Inversion of Control and Dependency Injection: Working with Windsor Container http://msdn.microsoft.com/en-us/library/aa973811.aspx

Castle Project http://www.castleproject.org/container/

StructureMap http://structuremap.sourceforge.net

Page 57: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

UI Patterns: MVC – MVP

14/06/2008 – Sim0ne Chiarettaemail: [email protected] ITA: http://blogs.ugidotnet.org/piyo/blog ENG: http://codeclimber.net.nz/

Page 58: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

It’s all about separation

Loose coupling Necessario rimuovere l’ambiente

esterno Uomo WebServer

Page 59: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

UI Pattern

MVC – Model View Controller MVP – Model View Presenter

Page 60: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Model View Controller

Model

View

Controller

Page 61: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Model View Presenter

ModelPresenterView

IView

Page 62: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Dove si trovano in natura

MVC MonoRail ASP.NET MVC Framework Prism

MVP Mostly custom built WebClientSoftwareFactory CompositeUIApplicationBlock

Page 63: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Come saperne di più su MVC http://asp.net/mvc/ - Sito ufficiale, con download P2 http://www.codeplex.com/aspnet - Codice sorgente http://del.icio.us/tag/aspnetmvc - tutti gli articoli su

ASP.NET MVC http://polymorphicpodcast.com/shows/mvcresource

s/ - lista “commentata” di risorse

Blog di MS ScottGu: http://weblogs.asp.net/scottgu/default.aspx ScottHa: http://www.hanselman.com/blog/ PhilHa: http://haacked.com/

Leggendo il mio blog DotNetMarche – 27 Giugno – Testing automatizzato

e Asp.NET MVC Framework

Page 64: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

ORM - Object Relational Mapping

14/06/2008 – Matteo BagliniMail: [email protected]: http://blogs.ugidotnet.org/bmatte

Page 65: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Quando e Perchè usare un ORM

Page 66: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Scenario

Business Logic Layer modellato utilizzando il pattern Domain Model.

Le tabelle del database secondo il modello relazionale RDBMS .

Page 67: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Problema

Paradigm Mismatch

?ORM

Page 68: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Definizione di ORM

L’ Object Relational Mapping è uno strumento che permette di mappare i dati fra il modello RDBMS ed il modello OOP.

Page 69: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Tecniche di Data Mapping

File XML

Decorando Classi e Proprietà con Attributi

Page 70: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Vantaggi e Svantaggi

Page 71: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Vantaggi

Permette di disegnare il modello seguendo la teoria OOP osservando solo la business logic.

Approccio non più bottom-up ma top-down (dal dominio alla persistenza).

Generazione automatica ed ottimizzata di statement sql creati ad hoc, i quali permettendo di gestire in maniera molto più granulare le operazioni CRUD.

Page 72: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Svantaggi

Alta curva di apprendimento iniziale. Leggeri compromessi nella

progettazione del Domain Model, es. Implementare interfacce.

Viene visto come “lo strumento” che permette allo sviluppatore di dimenticarsi del database.

Page 73: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

ORM per .NET

Page 74: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

I più famosi

NHibernate Open Source / Porting da Hibernate (Java) /

Multi Database Vendor / Persistence Ignorance / Mapping Complessi

Linq To Sql Supporto di MS/ Integrato con VS / Sintassi

Linq / Molto Semplice Entity Framework (Beta 3)

Supporto di MS/ Integrato con VS / Multi Database Vendor / Sintassi Linq / Mapping Complessi

Page 75: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Link

Object Relational Mapping Wikipedia -

http://en.wikipedia.org/wiki/Object-relational_mapping

C2.com - http://c2.com/cgi/wiki?ObjectRelationalMapping

NHibernate/Hibernate Sito - http://www.hibernate.org/ Libro - http://www.manning.com/kuate/

Page 76: UGIALT.NET Conference - 14 Giugno 2008. 10:00 – Benvenuto 10:15 – Introduzione a UGIALT.NET 10:30 – Lightning talks 11:00 – Pausa 11:15 – Prioritizzazione.

Link

Linq To Sql MSDN -

http://msdn.microsoft.com/en-us/library/bb386976.aspx

Serie di di Post sul Blog di ScottGu - http://weblogs.asp.net/scottgu/archive/tags/LINQ/Data/default.aspx

Entity Framework MSDN -

http://msdn.microsoft.com/en-us/library/aa697427(VS.80).aspx

CodePlex Samples- http://www.codeplex.com/adonetsamples/