Slide Prelaurea. Alessandro Andreosè

29
Alessandro Andreosè Laureando in Ingegneria Informatica

description

Slide prelaurea tesi specialistica in ingegneria informatica, Università di Trieste. Alessandro Andreosè

Transcript of Slide Prelaurea. Alessandro Andreosè

Page 1: Slide Prelaurea. Alessandro Andreosè

Alessandro AndreosèLaureando in Ingegneria Informatica

Page 2: Slide Prelaurea. Alessandro Andreosè

Agevolare lo sviluppo di applicazioni desktop◦ MVVM

◦ UI Composition

◦ Separazione ruoli

Designer

Developer

Separazione dei ruoli tra Designer e Developer nello sviluppo di applicazioni Desktop: uso di WPF e del pattern Model-View-ViewModel

Page 3: Slide Prelaurea. Alessandro Andreosè

Interfaccia utente ◦ Elevata user experience

WPF

◦ Modulare

UI Composition

◦ Testabile e manutenibile

MVVM

Page 4: Slide Prelaurea. Alessandro Andreosè

Applicazione Desktop

Ambiente Client e Server Microsoft◦ IIS 7.0

◦ Framework .NET 3.5 SP1

◦ SQL Server 2008

Page 5: Slide Prelaurea. Alessandro Andreosè

MVVM◦ MVVM Light Toolkit

di Laurent Bugnion

◦ Cinch

di Sasha Barber

◦ Goldlight

di Peter O'Hanlon

◦ ...

MVVM e UI Composition◦ Prism

del Team di Patterns and Practices di Microsoft

Page 6: Slide Prelaurea. Alessandro Andreosè

Tecnologia di «Presentazione»

Disponibile da Novembre 2006 (Fx 3.0)

Andrà a sostituire la tecnologia GDI/Winforms◦ GDI(circa 1985 Windows 3.0)

DirectX◦ Sfrutta l'hardware grafico

Page 7: Slide Prelaurea. Alessandro Andreosè

WF PDFWF

GDI+WMP

Direct 3D

WPF

Interfaccia grafica

X X

Lettura documentia video X X

Stampa di documenti X X

Immagini X X

Media X X

Grafica 2D X X

Grafica 3D X X

Page 8: Slide Prelaurea. Alessandro Andreosè

XAML◦ Linguaggio di Markup◦ 1 elemento, 1 oggetto .NET ◦ Il nome del tag è il nome della classe

Command◦ Associare un comando ad un evento◦ 1 evento, 1 comando◦ Tanti eventi, 1 comando

Data Binding ◦ Collegare un dato direttamente all'interfaccia utente◦ INotifyPropertyChanged

Designer

Expression Blend

…<Button Background=“Red”>

No

</Button>

XAML

Developer

Visual Studio

Page 9: Slide Prelaurea. Alessandro Andreosè

Separa interfaccia utente da implementazione◦ DataBinding◦ Command◦ Minimizzare (annullare) codice nel code behind

Variante di MVC◦ MVVM ideato nel ottobre 2005 da John Grossman◦ Utilizzato in Microsoft per sviluppare Expression

Blend

Non c'è contatto tra view e model◦ Il ViewModel è sempre in mezzo

Model – dominio applicativo View – UI ViewModel – Model of a View, astrazione della view

Page 10: Slide Prelaurea. Alessandro Andreosè

View◦ UI

XAML Poco (o nulla) Code Behind

ViewModel◦ Model of a View

Astrazione della View Specializzazione del Model 1 user story, 1 ViewModel

Model◦ Dominio Applicativo

Person

Page 11: Slide Prelaurea. Alessandro Andreosè

Svilippo di un Toolkit per agevolare la realizzazione di applicazioni desktop◦ Basato su MVVM

DataBinding

Command

Broker

◦ Basato su UI Composition

Module

Region

Shell

Page 12: Slide Prelaurea. Alessandro Andreosè

Sì MVVM

No MVVM

Page 13: Slide Prelaurea. Alessandro Andreosè

la finestra View1 ha un bottone, ◦ al clic bisogna scrivere in una TextBox "Bottone

premuto"

Page 14: Slide Prelaurea. Alessandro Andreosè

No MVVM

Sì MVVM

Page 15: Slide Prelaurea. Alessandro Andreosè

una finestra, View1 ha un bottone◦ Al clic si deve visualizzare un'altra finestra, View2

No MVVM

Page 16: Slide Prelaurea. Alessandro Andreosè

VM1 conosce VM2VM1 crea VM2 e non View2

Page 17: Slide Prelaurea. Alessandro Andreosè

Attore terzo

◦ In mezzo tra 2 attori (VM1, VM2)

◦ Rispecchia il pattern evento – sottoscrizione

Azioni

◦ Dispatch messaggio

◦ Sottoscrizione messaggio

◦ Cancellazione sottoscrizione

VM1 richiede View2

Il brokercrea VM2

VM2 visualizza View2

Page 18: Slide Prelaurea. Alessandro Andreosè

VM◦ Diaccoppia View e Model

Command◦ Disaccoppia Evento e Operazione da eseguire◦ Testabilità dell'operazione

DataBinding◦ Disaccoppia UI e Dati

Command + DataBinding◦ ViewModel indipendente dalla View

Broker◦ Disaccoppia ViewModel

Page 19: Slide Prelaurea. Alessandro Andreosè

Modulo◦ Parte di applicazione

◦ Generalmente visuale

Region◦ Contiene moduli

visuali

Shell◦ Finestra principale

◦ 1 sola shell

◦ contiene 1 o più region

SHELL

REGION 1 REGION 2

REGION 3

Modulo 5

Modulo 4

Modulo 3

Modulo 2

Modulo 1

Modulo 6

Modulo 7Modulo 8 Modulo 9

Page 20: Slide Prelaurea. Alessandro Andreosè

nella finestra principale (Shell)◦ si preme un bottone

◦ si deve inserire nella shell una view (View1)

Page 21: Slide Prelaurea. Alessandro Andreosè

creazione modulologica inserimento modulo

creazione modulologica inserimento modulo

Shell

View1

REGION

Container di IoC

View1

View1

Show View1

RegionManager

No UI Composition

Sì UI Composition

Page 22: Slide Prelaurea. Alessandro Andreosè

Broker◦ Punto di contatto tra MVVM e UI Composition

◦ Disaccoppia ViewModel

RegionManager◦ Disaccoppia Shell da Modulo

◦ Module = View + ViewModel

IoC◦ Disaccoppia creazione oggetti dal resto

dell'applicazione

Page 23: Slide Prelaurea. Alessandro Andreosè

Sviluppo di un Toolkit◦ Agevolare la realizzazione di applicazioni desktop

WPF + MVVM

User Experience

UI Composition

Applicazione modulare

La modifica di un modulo non influsce sul resto dell'applicazione

Page 24: Slide Prelaurea. Alessandro Andreosè

Gestione palestre◦ Assegnazione turni

Società

Palestra

Custode

◦ Pagamento utilizzo palestra

Società

Custode

Page 25: Slide Prelaurea. Alessandro Andreosè

DB Server DC Web Server

Client Client Client

Client

Page 26: Slide Prelaurea. Alessandro Andreosè
Page 27: Slide Prelaurea. Alessandro Andreosè

WPF è giovane (11/2006)◦ Pochi controlli di terze parti◦ Designer molto recente

Expression Blend 2 SP1 (08/2008)

MVVM è giovane (10/2005)◦ Molte soluzioni diverse agli stessi problemi

WPF, MVVM e UI Composition◦ I vantaggi sono superiori agli svantaggi

WPF vs WinForms◦ User Experience

DataBinding, Template, Style, Attached Behaviors Separazione dei ruoli Designer, Developer semplificata

◦ Microsoft non sviluppa più Windows Forms

Page 28: Slide Prelaurea. Alessandro Andreosè

Toolkit◦ Nuove region

◦ Sistema di validazione e focus

◦ Undo & Redo

Applicazione (core già in produzione)◦ Terminare il porting in produzione

◦ Bug Fixing

Page 29: Slide Prelaurea. Alessandro Andreosè

DB◦ 30 tabelle

Software◦ 18 progetti VisualStudio

◦ 500+ Unit Test

◦ 16.000+ righe di codice