slide prelaurea. alessandro andreosè
DESCRIPTION
Slide prelaurea tesi specialistica in ingegneria informatica, Università di Trieste. Alessandro AndreosèTRANSCRIPT
![Page 1: Slide Prelaurea. Alessandro Andreosè](https://reader031.vdocuments.net/reader031/viewer/2022020717/5560b574d8b42aef3b8b493e/html5/thumbnails/1.jpg)
Alessandro AndreosèLaureando in Ingegneria Informatica
![Page 2: Slide Prelaurea. Alessandro Andreosè](https://reader031.vdocuments.net/reader031/viewer/2022020717/5560b574d8b42aef3b8b493e/html5/thumbnails/2.jpg)
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è](https://reader031.vdocuments.net/reader031/viewer/2022020717/5560b574d8b42aef3b8b493e/html5/thumbnails/3.jpg)
Interfaccia utente ◦ Elevata user experience
WPF
◦ Modulare
UI Composition
◦ Testabile e manutenibile
MVVM
![Page 4: Slide Prelaurea. Alessandro Andreosè](https://reader031.vdocuments.net/reader031/viewer/2022020717/5560b574d8b42aef3b8b493e/html5/thumbnails/4.jpg)
Applicazione Desktop
Ambiente Client e Server Microsoft◦ IIS 7.0
◦ Framework .NET 3.5 SP1
◦ SQL Server 2008
![Page 5: Slide Prelaurea. Alessandro Andreosè](https://reader031.vdocuments.net/reader031/viewer/2022020717/5560b574d8b42aef3b8b493e/html5/thumbnails/5.jpg)
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è](https://reader031.vdocuments.net/reader031/viewer/2022020717/5560b574d8b42aef3b8b493e/html5/thumbnails/6.jpg)
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è](https://reader031.vdocuments.net/reader031/viewer/2022020717/5560b574d8b42aef3b8b493e/html5/thumbnails/7.jpg)
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è](https://reader031.vdocuments.net/reader031/viewer/2022020717/5560b574d8b42aef3b8b493e/html5/thumbnails/8.jpg)
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è](https://reader031.vdocuments.net/reader031/viewer/2022020717/5560b574d8b42aef3b8b493e/html5/thumbnails/9.jpg)
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è](https://reader031.vdocuments.net/reader031/viewer/2022020717/5560b574d8b42aef3b8b493e/html5/thumbnails/10.jpg)
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è](https://reader031.vdocuments.net/reader031/viewer/2022020717/5560b574d8b42aef3b8b493e/html5/thumbnails/11.jpg)
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è](https://reader031.vdocuments.net/reader031/viewer/2022020717/5560b574d8b42aef3b8b493e/html5/thumbnails/12.jpg)
Sì MVVM
No MVVM
![Page 13: Slide Prelaurea. Alessandro Andreosè](https://reader031.vdocuments.net/reader031/viewer/2022020717/5560b574d8b42aef3b8b493e/html5/thumbnails/13.jpg)
la finestra View1 ha un bottone, ◦ al clic bisogna scrivere in una TextBox "Bottone
premuto"
![Page 14: Slide Prelaurea. Alessandro Andreosè](https://reader031.vdocuments.net/reader031/viewer/2022020717/5560b574d8b42aef3b8b493e/html5/thumbnails/14.jpg)
No MVVM
Sì MVVM
![Page 15: Slide Prelaurea. Alessandro Andreosè](https://reader031.vdocuments.net/reader031/viewer/2022020717/5560b574d8b42aef3b8b493e/html5/thumbnails/15.jpg)
una finestra, View1 ha un bottone◦ Al clic si deve visualizzare un'altra finestra, View2
No MVVM
![Page 16: Slide Prelaurea. Alessandro Andreosè](https://reader031.vdocuments.net/reader031/viewer/2022020717/5560b574d8b42aef3b8b493e/html5/thumbnails/16.jpg)
VM1 conosce VM2VM1 crea VM2 e non View2
![Page 17: Slide Prelaurea. Alessandro Andreosè](https://reader031.vdocuments.net/reader031/viewer/2022020717/5560b574d8b42aef3b8b493e/html5/thumbnails/17.jpg)
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è](https://reader031.vdocuments.net/reader031/viewer/2022020717/5560b574d8b42aef3b8b493e/html5/thumbnails/18.jpg)
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è](https://reader031.vdocuments.net/reader031/viewer/2022020717/5560b574d8b42aef3b8b493e/html5/thumbnails/19.jpg)
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è](https://reader031.vdocuments.net/reader031/viewer/2022020717/5560b574d8b42aef3b8b493e/html5/thumbnails/20.jpg)
nella finestra principale (Shell)◦ si preme un bottone
◦ si deve inserire nella shell una view (View1)
![Page 21: Slide Prelaurea. Alessandro Andreosè](https://reader031.vdocuments.net/reader031/viewer/2022020717/5560b574d8b42aef3b8b493e/html5/thumbnails/21.jpg)
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è](https://reader031.vdocuments.net/reader031/viewer/2022020717/5560b574d8b42aef3b8b493e/html5/thumbnails/22.jpg)
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è](https://reader031.vdocuments.net/reader031/viewer/2022020717/5560b574d8b42aef3b8b493e/html5/thumbnails/23.jpg)
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è](https://reader031.vdocuments.net/reader031/viewer/2022020717/5560b574d8b42aef3b8b493e/html5/thumbnails/24.jpg)
Gestione palestre◦ Assegnazione turni
Società
Palestra
Custode
◦ Pagamento utilizzo palestra
Società
Custode
![Page 25: Slide Prelaurea. Alessandro Andreosè](https://reader031.vdocuments.net/reader031/viewer/2022020717/5560b574d8b42aef3b8b493e/html5/thumbnails/25.jpg)
DB Server DC Web Server
Client Client Client
Client
![Page 26: Slide Prelaurea. Alessandro Andreosè](https://reader031.vdocuments.net/reader031/viewer/2022020717/5560b574d8b42aef3b8b493e/html5/thumbnails/26.jpg)
![Page 27: Slide Prelaurea. Alessandro Andreosè](https://reader031.vdocuments.net/reader031/viewer/2022020717/5560b574d8b42aef3b8b493e/html5/thumbnails/27.jpg)
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è](https://reader031.vdocuments.net/reader031/viewer/2022020717/5560b574d8b42aef3b8b493e/html5/thumbnails/28.jpg)
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è](https://reader031.vdocuments.net/reader031/viewer/2022020717/5560b574d8b42aef3b8b493e/html5/thumbnails/29.jpg)
DB◦ 30 tabelle
Software◦ 18 progetti VisualStudio
◦ 500+ Unit Test
◦ 16.000+ righe di codice