introduzione a mvvm e caliburn.micro
DESCRIPTION
Prima sessione dell'evento "MVVM senza 'fronzoli' con Caliburn.Micro" organizzato da DomusDotNet il 17 Giugno 2011TRANSCRIPT
![Page 1: Introduzione a MVVM e Caliburn.Micro](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54b667884a79595f448b456f/html5/thumbnails/1.jpg)
Introduzione a MVVM
Massimo [email protected] http://
codetailor.blogspot.com
http://twitter.com/massimobonanni
![Page 2: Introduzione a MVVM e Caliburn.Micro](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54b667884a79595f448b456f/html5/thumbnails/2.jpg)
Agenda
• I Pattern, questi sconosciuti
• Da MVC a MVVM, un pò di storia
• MVVM e Presentation Framework
• Client Shared Bookshelf Manager
• Avviciniamoci a Caliburn.Micro
![Page 3: Introduzione a MVVM e Caliburn.Micro](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54b667884a79595f448b456f/html5/thumbnails/3.jpg)
I Pattern, questi sconosciuti• Un pattern è «una soluzione progettuale generale a
un problema ricorrente»;
• Utilizzare un pattern significa :– non dover «inventare la ruota» ogni volta;– risolvere il problema in maniera «standard» garantendo:
• Comprensibilità del software;• Manutenibilità del software;• Ottimizzazione del software.
![Page 4: Introduzione a MVVM e Caliburn.Micro](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54b667884a79595f448b456f/html5/thumbnails/4.jpg)
I Pattern, questi sconosciutiEsistono diversi tipi di Pattern:– I pattern della «banda dei quattro»:
• Pattern creazionali (ed esempio il Singleton);• Pattern strutturali (ad esempio l’Adapter);• Pattern comportamentali ( ad esempio l’Iterator).
– I pattern architetturali: sono tutti quei patterns che definiscono l’organizzazione strutturale di un sistema (ad esempio MVC);
– I pattern di metodologia;
– I pattern di concorrenza.
![Page 5: Introduzione a MVVM e Caliburn.Micro](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54b667884a79595f448b456f/html5/thumbnails/5.jpg)
In principio era MVC: la genealogia di MVVM
MVC
MVP
PM
MVVM
Model 2
1979
1990
2004
2005
![Page 6: Introduzione a MVVM e Caliburn.Micro](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54b667884a79595f448b456f/html5/thumbnails/6.jpg)
Briciole di MVC• Pattern architetturale pensato nel 1979 da Trygve Reenskaug per
Smalltalk;
• Scopo del pattern è quello di separare in maniera netta tutto ciò che fa parte della UI da ciò che è logica di dominio consentendo una maggiore modularità e testabilità;
• MVC è l’acronimo di Model-View-Controller:– Model : implementa la logica "business", ovvero quell'insieme di regole e
comportamenti che attengono puramente al dominio del problema trattato (algoritmi di calcolo, validazione dei dati, ecc.). Il Model è agnostico rispetto alla tecnologia usata per la UI;
– View : si tratta, sostanzialmente della UI (presentazione dati, interazione con l’utente, etc., etc.);
– Controller : è la parte che svolge il ruolo di coordinamento e mediazione degli altri componenti;
![Page 7: Introduzione a MVVM e Caliburn.Micro](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54b667884a79595f448b456f/html5/thumbnails/7.jpg)
MVC in Action
ModelView
Controller
1 2
InvocazioneModel
Notifica interazione
utente
3
La view«osserva»il Model
4
La View siaggiorna
![Page 8: Introduzione a MVVM e Caliburn.Micro](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54b667884a79595f448b456f/html5/thumbnails/8.jpg)
MVC in Action
![Page 9: Introduzione a MVVM e Caliburn.Micro](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54b667884a79595f448b456f/html5/thumbnails/9.jpg)
Briciole di MVP • Nel pattern MVP, il ruolo del controller diventa quello di
orchestratore tra View e Model;
• La View, rispetto a MVC, è in grado di:– Gestire (in virtù di una migliorata tecnologia) direttamente le “gesture”
dell’utente;– Gestire la maggior parte delle attività di presentazione (purchè la logica sia
semplice e non sia di dominio);
• Esistono due «flavour»:– Supervising Controller: la view è in grado di interagire (tipicamente con il
pattern observer) con il model;– Passive View: la view è «passiva» ed è interamente il presenter ad interagire
con il model.
![Page 10: Introduzione a MVVM e Caliburn.Micro](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54b667884a79595f448b456f/html5/thumbnails/10.jpg)
MVP Passive View
ModelView
Presenter1
2
InvocazioneModel
Notifica interazione
utente
3
Aggiornamentodella View
![Page 11: Introduzione a MVVM e Caliburn.Micro](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54b667884a79595f448b456f/html5/thumbnails/11.jpg)
MVP Passive View
![Page 12: Introduzione a MVVM e Caliburn.Micro](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54b667884a79595f448b456f/html5/thumbnails/12.jpg)
Briciole di PM e MVVM ”Presentation Model pulls the state and behavior of the view out into a model class that is part of the presentation. The Presentation Model coordinates with the domain layer and provides an interface to the view that minimizes decision making in the view. The view either stores all its state in the Presentation Model or synchonizes its state with Presentation Model frequently”
Martin Fowler(http://martinfowler.com/eaaDev/PresentationModel.html)
![Page 13: Introduzione a MVVM e Caliburn.Micro](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54b667884a79595f448b456f/html5/thumbnails/13.jpg)
Briciole di PM e MVVM • MVVM altro non è che una «specializzazione» idiomatica di PM basata
sulla tecnologia del presentation Framework di Microsoft;
• Introdotto da John Grossman durante lo sviluppo di WPF;
• Il ViewModel rappresenta, in maniera astratta, tutte le informazioni ed i comportamenti della corrispondente View;
• La View si limita a visualizzare graficamente quanto esposto dal ViewModel;
• Di fondamentale importanza l’esistenza del motore di DataBinding del Presentation Framework.
![Page 14: Introduzione a MVVM e Caliburn.Micro](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54b667884a79595f448b456f/html5/thumbnails/14.jpg)
Model View ViewModel
ModelView
View Model
1 2
InvocazioneModel
Notifica interazione
utente (Command)
3
Aggiornamentodella View
(PropertyChanged)
![Page 15: Introduzione a MVVM e Caliburn.Micro](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54b667884a79595f448b456f/html5/thumbnails/15.jpg)
Model View ViewModel – Command
![Page 16: Introduzione a MVVM e Caliburn.Micro](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54b667884a79595f448b456f/html5/thumbnails/16.jpg)
Model View ViewModel – Property Changed
![Page 17: Introduzione a MVVM e Caliburn.Micro](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54b667884a79595f448b456f/html5/thumbnails/17.jpg)
Credits: zazzle.com
DEMO
Il client di Shared Bookshelf Manager
![Page 18: Introduzione a MVVM e Caliburn.Micro](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54b667884a79595f448b456f/html5/thumbnails/18.jpg)
Riferimenti a Caliburn.Micro
Sito web:http://caliburnmicro.codeplex.com/
![Page 19: Introduzione a MVVM e Caliburn.Micro](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54b667884a79595f448b456f/html5/thumbnails/19.jpg)
Installare Caliburn.Micro
• Download dal sito web e reference delle dll;• Aggiunta delle reference con NuGet:
![Page 20: Introduzione a MVVM e Caliburn.Micro](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54b667884a79595f448b456f/html5/thumbnails/20.jpg)
Credits: zazzle.com
DEMO
Caliburn.Micro e Nuget
![Page 21: Introduzione a MVVM e Caliburn.Micro](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54b667884a79595f448b456f/html5/thumbnails/21.jpg)
Sponsor