SlideShare a Scribd company logo
Introduzione a MVVMMassimo Bonannimassimo.bonanni@domusdotnet.org	http://codetailor.blogspot.comhttp://twitter.com/massimobonanni
AgendaI Pattern, questi sconosciutiDa MVC a MVVM, un pò di storiaMVVM e Presentation FrameworkClient Shared Bookshelf ManagerAvviciniamoci a Caliburn.Micro
I Pattern, questi sconosciutiUn 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.
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.
In principio era MVC: la genealogia di MVVM1979199020042005
Briciole di MVCPattern architetturale pensato nel 1979 da TrygveReenskaugper Smalltalk;Scopo del pattern è quello di separare in manieranettatuttociòchefa parte della UI da ciòche è logica di dominioconsentendounamaggioremodularità 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;
MVC in ActionControllerNotifica interazione utenteInvocazioneModel12ModelView43La view«osserva»il ModelLa View siaggiorna
MVC in Action
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 unamiglioratatecnologia) direttamente le “gesture” dell’utente;Gestire la maggior parte delleattività di presentazione (purchè la logicasiasemplice 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.
MVP Passive ViewPresenterNotifica interazione utenteInvocazioneModel213ModelViewAggiornamentodella View
MVP Passive View
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)
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.
Model View ViewModelView ModelNotifica interazione utente (Command)InvocazioneModel123ModelViewAggiornamentodella View(PropertyChanged)
Model View ViewModel – Command
Model View ViewModel – Property Changed
DEMOIl client di Shared Bookshelf Manager
Riferimenti a Caliburn.MicroSito web:	http://caliburnmicro.codeplex.com/
Installare Caliburn.MicroDownload dal sito web e reference delle dll;Aggiunta delle reference con NuGet:
DEMOCaliburn.Micro e Nuget
Sponsor

More Related Content

PDF
Slide Prelaurea. Alessandro Andreosè
guesta10af3
 
PPT
Introduzione WPF
Ercole Palmeri
 
PPTX
m-v-vm @ UgiAlt.Net
Mauro Servienti
 
PDF
Il pattern mvvm come strutturare al meglio il vostro progetto
Microsoft Mobile Developer
 
PPTX
Nakov at Fuck Up Nights - July 2015 @ Sofia
Svetlin Nakov
 
PPTX
Slide typescript - xe dotnet - Codemotion Rome 2015
Codemotion
 
PPTX
System.AddIn @ Xe.Net
Mauro Servienti
 
PDF
SUE AGILE MVVM (Italian)
Sabino Labarile
 
Slide Prelaurea. Alessandro Andreosè
guesta10af3
 
Introduzione WPF
Ercole Palmeri
 
m-v-vm @ UgiAlt.Net
Mauro Servienti
 
Il pattern mvvm come strutturare al meglio il vostro progetto
Microsoft Mobile Developer
 
Nakov at Fuck Up Nights - July 2015 @ Sofia
Svetlin Nakov
 
Slide typescript - xe dotnet - Codemotion Rome 2015
Codemotion
 
System.AddIn @ Xe.Net
Mauro Servienti
 
SUE AGILE MVVM (Italian)
Sabino Labarile
 

Viewers also liked (17)

PPTX
Следвай вдъхновението си! (фестивал "Свободата да бъдеш - април 2016")
Svetlin Nakov
 
PPTX
Професия "програмист"
Svetlin Nakov
 
PPTX
Dependency Injection and Inversion Of Control
Simone Busoli
 
PPTX
Inversion of Control @ CD2008
Mauro Servienti
 
PPTX
Model-View-ViewModel
DotNetMarche
 
PDF
Как да станем софтуерни инженери и да стартираме ИТ бизнес?
Svetlin Nakov
 
PPTX
Работа с Естествен Интелект – Личност – Време – 3 юли 2013 @ НЛП клуб
Svetlin Nakov
 
PDF
Regular Expressions: QA Challenge Accepted Conf (March 2015)
Svetlin Nakov
 
PDF
Architetttura Della Soluzione
Luca Milan
 
PPTX
UI Composition
DotNetMarche
 
PPTX
Dependency Injection
Raffaele Fanizzi
 
PPTX
Entity Framework: Nakov @ BFU Hackhaton 2015
Svetlin Nakov
 
PDF
WPF MVVM Toolkit
Alessandro Andreose'
 
PPT
Architectural Patterns and Software Architectures: Client-Server, Multi-Tier,...
Svetlin Nakov
 
PPTX
Design pattern architetturali Model View Controller, MVP e MVVM
Riccardo Cardin
 
PPTX
Design Pattern Architetturali - Dependency Injection
Riccardo Cardin
 
PPTX
Layered Software Architecture
Lars-Erik Kindblad
 
Следвай вдъхновението си! (фестивал "Свободата да бъдеш - април 2016")
Svetlin Nakov
 
Професия "програмист"
Svetlin Nakov
 
Dependency Injection and Inversion Of Control
Simone Busoli
 
Inversion of Control @ CD2008
Mauro Servienti
 
Model-View-ViewModel
DotNetMarche
 
Как да станем софтуерни инженери и да стартираме ИТ бизнес?
Svetlin Nakov
 
Работа с Естествен Интелект – Личност – Време – 3 юли 2013 @ НЛП клуб
Svetlin Nakov
 
Regular Expressions: QA Challenge Accepted Conf (March 2015)
Svetlin Nakov
 
Architetttura Della Soluzione
Luca Milan
 
UI Composition
DotNetMarche
 
Dependency Injection
Raffaele Fanizzi
 
Entity Framework: Nakov @ BFU Hackhaton 2015
Svetlin Nakov
 
WPF MVVM Toolkit
Alessandro Andreose'
 
Architectural Patterns and Software Architectures: Client-Server, Multi-Tier,...
Svetlin Nakov
 
Design pattern architetturali Model View Controller, MVP e MVVM
Riccardo Cardin
 
Design Pattern Architetturali - Dependency Injection
Riccardo Cardin
 
Layered Software Architecture
Lars-Erik Kindblad
 
Ad

Similar to Introduzione a MVVM e Caliburn.Micro (20)

PPTX
Mvvm
Marco Buttolo
 
PPTX
Model-View-ViewModel con Windows Store Apps
codeblock
 
PPTX
m-v-vm @ dotNetMarche
Mauro Servienti
 
PDF
AreaMVC: un'architettura software basata sulla semplicità
Giulio Destri
 
PPTX
MVVM senza fronzoli con Caliburn.Micro
Marco Amendola
 
PPTX
Realizzare applicazioni cross-platform con Xamarin e il pattern MVVM
Codemotion
 
PPT
Sviluppo MVVM con Android
Lorenzo Maiorfi
 
PPTX
Silverlight m v-vm @ DotNetteria
Mauro Servienti
 
PPTX
Introduzione a MVVM con MVVM light
Matteo Pagani
 
PDF
Idiomatic Domain Driven Design
Andrea Saltarello
 
PPTX
Alessandro Forte - MVP vs MVC
Alessandro Forte
 
PPTX
Win8@work - Windows 8 e MVVM
Marco Amendola
 
PPT
Paradigma mvc
Marco Buttolo
 
PPT
WPF & LINQ: VB T&T Community After Hour @ Microsoft Days 08
Alessandro Del Sole
 
PDF
MVVM Cross <3 Xamarin
Corrado Cavalli
 
PPTX
ASP.NET MVC 2.0
XeDotNet
 
PDF
WPF MVVM Toolkit
Alessandro Andreose'
 
PDF
Tesi Laurea Specialistica Ingegneria Informatica. Alessandro Andreosè
guesta10af3
 
PDF
ASP.NET MVC: Full Throttle
Andrea Saltarello
 
PPTX
Asp.NET MVC Framework
DotNetMarche
 
Model-View-ViewModel con Windows Store Apps
codeblock
 
m-v-vm @ dotNetMarche
Mauro Servienti
 
AreaMVC: un'architettura software basata sulla semplicità
Giulio Destri
 
MVVM senza fronzoli con Caliburn.Micro
Marco Amendola
 
Realizzare applicazioni cross-platform con Xamarin e il pattern MVVM
Codemotion
 
Sviluppo MVVM con Android
Lorenzo Maiorfi
 
Silverlight m v-vm @ DotNetteria
Mauro Servienti
 
Introduzione a MVVM con MVVM light
Matteo Pagani
 
Idiomatic Domain Driven Design
Andrea Saltarello
 
Alessandro Forte - MVP vs MVC
Alessandro Forte
 
Win8@work - Windows 8 e MVVM
Marco Amendola
 
Paradigma mvc
Marco Buttolo
 
WPF & LINQ: VB T&T Community After Hour @ Microsoft Days 08
Alessandro Del Sole
 
MVVM Cross <3 Xamarin
Corrado Cavalli
 
ASP.NET MVC 2.0
XeDotNet
 
WPF MVVM Toolkit
Alessandro Andreose'
 
Tesi Laurea Specialistica Ingegneria Informatica. Alessandro Andreosè
guesta10af3
 
ASP.NET MVC: Full Throttle
Andrea Saltarello
 
Asp.NET MVC Framework
DotNetMarche
 
Ad

More from Massimo Bonanni (20)

PDF
Empower every Azure Function to achieve more!!
Massimo Bonanni
 
PDF
Durable Functions vs Logic App : la guerra dei workflow!!
Massimo Bonanni
 
PDF
Stateful pattern con Azure Functions
Massimo Bonanni
 
PDF
Architetture Serverless con SQL Server e Azure Functions
Massimo Bonanni
 
PDF
IoT in salsa serverless
Massimo Bonanni
 
PDF
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
Massimo Bonanni
 
PDF
Stateful patterns in Azure Functions
Massimo Bonanni
 
PDF
IoT in salsa Serverless
Massimo Bonanni
 
PDF
The art of Azure Functions (unit) testing and monitoring
Massimo Bonanni
 
PDF
Empower every Azure Function to achieve more!!
Massimo Bonanni
 
PDF
The art of Azure Functions (unit) testing and monitoring
Massimo Bonanni
 
PDF
Everything you always wanted to know about API Management (but were afraid to...
Massimo Bonanni
 
PDF
Workflow as code with Azure Durable Functions
Massimo Bonanni
 
PDF
Xmas Serverless Transformation: when the elf doesn’t scale!
Massimo Bonanni
 
PPTX
Welcome Azure Functions 2. 0
Massimo Bonanni
 
PPTX
Discovering the Service Fabric's actor model
Massimo Bonanni
 
PPTX
Testing a Service Fabric solution and live happy!!
Massimo Bonanni
 
PPTX
Discovering the Service Fabric's actor model
Massimo Bonanni
 
PPTX
Soluzioni IoT con le tecnologie Microsoft
Massimo Bonanni
 
PPTX
Project Gesture & Real Sense: il potere nelle mani!!
Massimo Bonanni
 
Empower every Azure Function to achieve more!!
Massimo Bonanni
 
Durable Functions vs Logic App : la guerra dei workflow!!
Massimo Bonanni
 
Stateful pattern con Azure Functions
Massimo Bonanni
 
Architetture Serverless con SQL Server e Azure Functions
Massimo Bonanni
 
IoT in salsa serverless
Massimo Bonanni
 
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
Massimo Bonanni
 
Stateful patterns in Azure Functions
Massimo Bonanni
 
IoT in salsa Serverless
Massimo Bonanni
 
The art of Azure Functions (unit) testing and monitoring
Massimo Bonanni
 
Empower every Azure Function to achieve more!!
Massimo Bonanni
 
The art of Azure Functions (unit) testing and monitoring
Massimo Bonanni
 
Everything you always wanted to know about API Management (but were afraid to...
Massimo Bonanni
 
Workflow as code with Azure Durable Functions
Massimo Bonanni
 
Xmas Serverless Transformation: when the elf doesn’t scale!
Massimo Bonanni
 
Welcome Azure Functions 2. 0
Massimo Bonanni
 
Discovering the Service Fabric's actor model
Massimo Bonanni
 
Testing a Service Fabric solution and live happy!!
Massimo Bonanni
 
Discovering the Service Fabric's actor model
Massimo Bonanni
 
Soluzioni IoT con le tecnologie Microsoft
Massimo Bonanni
 
Project Gesture & Real Sense: il potere nelle mani!!
Massimo Bonanni
 

Introduzione a MVVM e Caliburn.Micro

  • 1. Introduzione a MVVMMassimo [email protected] http://codetailor.blogspot.comhttp://twitter.com/massimobonanni
  • 2. AgendaI Pattern, questi sconosciutiDa MVC a MVVM, un pò di storiaMVVM e Presentation FrameworkClient Shared Bookshelf ManagerAvviciniamoci a Caliburn.Micro
  • 3. I Pattern, questi sconosciutiUn 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.
  • 4. 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.
  • 5. In principio era MVC: la genealogia di MVVM1979199020042005
  • 6. Briciole di MVCPattern architetturale pensato nel 1979 da TrygveReenskaugper Smalltalk;Scopo del pattern è quello di separare in manieranettatuttociòchefa parte della UI da ciòche è logica di dominioconsentendounamaggioremodularità 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;
  • 7. MVC in ActionControllerNotifica interazione utenteInvocazioneModel12ModelView43La view«osserva»il ModelLa View siaggiorna
  • 9. 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 unamiglioratatecnologia) direttamente le “gesture” dell’utente;Gestire la maggior parte delleattività di presentazione (purchè la logicasiasemplice 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.
  • 10. MVP Passive ViewPresenterNotifica interazione utenteInvocazioneModel213ModelViewAggiornamentodella View
  • 12. 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)
  • 13. 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.
  • 14. Model View ViewModelView ModelNotifica interazione utente (Command)InvocazioneModel123ModelViewAggiornamentodella View(PropertyChanged)
  • 15. Model View ViewModel – Command
  • 16. Model View ViewModel – Property Changed
  • 17. DEMOIl client di Shared Bookshelf Manager
  • 18. Riferimenti a Caliburn.MicroSito web: http://caliburnmicro.codeplex.com/
  • 19. Installare Caliburn.MicroDownload dal sito web e reference delle dll;Aggiunta delle reference con NuGet: