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

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

Embed Size (px)

Citation preview

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/