SlideShare a Scribd company logo
1 of 34
MVVM senza “fronzoli”con Caliburn Micro Marco Amendola marco.amendola@domusdotnet.org marcoamendola.wordpress.com twitter.com/marcoamendola hashtag: #MVVMCM
Agenda ,[object Object]
Break
Action Messaging
UI Composition
Application Model
Coroutine,[object Object]
ma richiede troppi fronzoli Credits: artfinding.com
dobbiamo renderlo così Credits: movado.com
Approccio minimalista Cogliere le caratteristiche essenziali Eliminare le «cerimonie» superflue del MVVM Rendere semplici le operazioni più comuni
approccio minimalista: più spazio al nostro codice public class MyCode{ }
Cogliere le caratteristiche essenziali Comunicazione ViewModel -> View  Comunicazione View -> ViewModel Ciclo di vita dei ViewModel UI composition (dinamica)
Eliminare le «cerimonie» superflue del MVVM Associazione delle View con i ViewModel Istanziazione dei Relay Command Configurazione dei binding Implementazione di INotifyPropertyChanged
Rendere semplici le operazioni più comuni Convenzioni UI thread marshaling UI composition Gestione Window/Dialog Operazioni asincrone
Demo Shared Bookshelf Manager(da «vanilla» MVVM a Caliburn.Micro)
Break             .          Credits: school.salescrunch.com
MVVM senza “fronzoli”con Caliburn Microseconda parte Marco Amendola marco.amendola@domusdotnet.org http://marcoamendola.wordpress.com http://twitter.com/marcoamendola
Action Messaging Sono dei Command più «potenti» Separazione Trigger/Action Bubbling Parametri contestuali Esecuzione mediata
UI Composition Due diversi approcci: View-first E’ la view che guida la composizione Model-first Segue la struttura e le «indicazioni» (anche dinamiche) del VM
UI CompositionTecnica basata su binding e template ParentView Area Area (rappresentazione del) ViewModel
UI CompositionTecnica basata su binding e template
UI CompositionTecnica basata su binding e template ParentViewModel Area Area ViewModel
UI CompositionTecnica basata su binding e template ParentView Area multi-elemento Area ViewModel ViewModel ViewModel
UI CompositionGli strumenti di Caliburn Micro Credits: thinkgeek.com
UI CompositionGli strumenti di Caliburn Micro View.Model abilita View Location e convenzioni View.Context Consente view multiple sullo stesso VM (se proprio dovesse servire) Credits: faqs.org
Demo Shared Bookshelf Manager(Application Model tour)
Application Model(Screen & Conductor) Composizione dinamica Ciclo di vita Consenso alla chiusura Window Manager
Coroutine  Cosa sono? Wikipedia:  «Coroutines are computer program components  that generalize subroutines  to allow multiple entry points for suspending  and resuming execution at certain locations.» A cosa servono? Chiamate asincrone Testabilità Migliore leggibilità
Coroutine Meccanismo di funzionamento «Task» singolo
Coroutine Meccanismo di funzionamento Esecuzione sequenziale sincrona
Coroutine Meccanismo di funzionamento Esecuzione sequenziale asincrona B A C B A C A B C
Coroutine Meccanismo di funzionamento Creazione task A A B B C C ?
OK, questo era più complicato… Credits: ibiblio.org
Tutto il resto Event aggregator View.Bind  approccio view-first ViewAware caching e accesso alla view  Convention Manager

More Related Content

What's hot

Data binding libera tutti!
Data binding libera tutti!Data binding libera tutti!
Data binding libera tutti!
Salvatore Laisa
 
Utilizzare Windows Vista come Software Developer
Utilizzare Windows Vista come Software DeveloperUtilizzare Windows Vista come Software Developer
Utilizzare Windows Vista come Software Developer
Stefano Ottaviani
 
AngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webAngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni web
Luca Milan
 

What's hot (16)

Continuous Integration con Visual Studio Online
Continuous Integration con Visual Studio OnlineContinuous Integration con Visual Studio Online
Continuous Integration con Visual Studio Online
 
Data binding libera tutti!
Data binding libera tutti!Data binding libera tutti!
Data binding libera tutti!
 
Utilizzare Windows Vista come Software Developer
Utilizzare Windows Vista come Software DeveloperUtilizzare Windows Vista come Software Developer
Utilizzare Windows Vista come Software Developer
 
Spa with Blazor
Spa with BlazorSpa with Blazor
Spa with Blazor
 
MVC and Struts 1
MVC and Struts 1MVC and Struts 1
MVC and Struts 1
 
Knockout.js
Knockout.jsKnockout.js
Knockout.js
 
Rich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.jsRich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.js
 
ASP.NET Core - Razor Pages
ASP.NET Core - Razor PagesASP.NET Core - Razor Pages
ASP.NET Core - Razor Pages
 
Angular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkAngular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un framework
 
ASP.NET Core - dove siamo arrivati
ASP.NET Core - dove siamo arrivatiASP.NET Core - dove siamo arrivati
ASP.NET Core - dove siamo arrivati
 
AngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webAngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni web
 
Training Signal Webtrends
Training Signal WebtrendsTraining Signal Webtrends
Training Signal Webtrends
 
Christmas greetings cards with blazor
Christmas greetings cards with blazorChristmas greetings cards with blazor
Christmas greetings cards with blazor
 
Dal requisito all'implementazione @ CD2010
Dal requisito all'implementazione @ CD2010Dal requisito all'implementazione @ CD2010
Dal requisito all'implementazione @ CD2010
 
ASP.NET MVC Intro
ASP.NET MVC IntroASP.NET MVC Intro
ASP.NET MVC Intro
 
App Mobile Powerapps
App Mobile PowerappsApp Mobile Powerapps
App Mobile Powerapps
 

Viewers also liked

Viewers also liked (7)

agradecimiento
agradecimientoagradecimiento
agradecimiento
 
Model-View-ViewModel con Windows Store Apps
Model-View-ViewModel con Windows Store AppsModel-View-ViewModel con Windows Store Apps
Model-View-ViewModel con Windows Store Apps
 
WPF MVVM Toolkit
WPF MVVM ToolkitWPF MVVM Toolkit
WPF MVVM Toolkit
 
Introduzione a MVVM con MVVM light
Introduzione a MVVM con MVVM lightIntroduzione a MVVM con MVVM light
Introduzione a MVVM con MVVM light
 
Realizzare applicazioni cross-platform con Xamarin e il pattern MVVM
Realizzare applicazioni cross-platform con Xamarin e il pattern MVVMRealizzare applicazioni cross-platform con Xamarin e il pattern MVVM
Realizzare applicazioni cross-platform con Xamarin e il pattern MVVM
 
Tesi Laurea Specialistica Ingegneria Informatica. Alessandro Andreosè
Tesi Laurea Specialistica Ingegneria Informatica. Alessandro AndreosèTesi Laurea Specialistica Ingegneria Informatica. Alessandro Andreosè
Tesi Laurea Specialistica Ingegneria Informatica. Alessandro Andreosè
 
WPF MVVM Toolkit
WPF MVVM ToolkitWPF MVVM Toolkit
WPF MVVM Toolkit
 

Similar to MVVM senza fronzoli con Caliburn.Micro

Fe02 ria con breeze e knockout
Fe02   ria con breeze e knockoutFe02   ria con breeze e knockout
Fe02 ria con breeze e knockout
DotNetCampus
 
BPM e Cloud: la partnership ideale
BPM e Cloud: la partnership idealeBPM e Cloud: la partnership ideale
BPM e Cloud: la partnership ideale
emanuelemolteni
 
Win8@work - Windows 8 e MVVM
Win8@work - Windows 8 e MVVMWin8@work - Windows 8 e MVVM
Win8@work - Windows 8 e MVVM
Marco Amendola
 
Sviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle MonorailSviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle Monorail
DotNetMarche
 

Similar to MVVM senza fronzoli con Caliburn.Micro (20)

Migliora il tuo codice con knockout.js
Migliora il tuo codice con knockout.jsMigliora il tuo codice con knockout.js
Migliora il tuo codice con knockout.js
 
Fe02 ria con breeze e knockout
Fe02   ria con breeze e knockoutFe02   ria con breeze e knockout
Fe02 ria con breeze e knockout
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
Hands on MVC - Mastering the Web
Hands on MVC - Mastering the WebHands on MVC - Mastering the Web
Hands on MVC - Mastering the Web
 
Applicazioni web con Asp.Net MVC 6
Applicazioni web con Asp.Net MVC 6Applicazioni web con Asp.Net MVC 6
Applicazioni web con Asp.Net MVC 6
 
ASP.NET MVC 3: se non ora, quando?
ASP.NET MVC 3: se non ora, quando?ASP.NET MVC 3: se non ora, quando?
ASP.NET MVC 3: se non ora, quando?
 
ASP.NET
ASP.NETASP.NET
ASP.NET
 
Asp.Net MVC 2 :: VS 2010 Community Tour
Asp.Net MVC 2 :: VS 2010 Community TourAsp.Net MVC 2 :: VS 2010 Community Tour
Asp.Net MVC 2 :: VS 2010 Community Tour
 
BPM e Cloud: la partnership ideale
BPM e Cloud: la partnership idealeBPM e Cloud: la partnership ideale
BPM e Cloud: la partnership ideale
 
Integrazione continua con TFS Build
Integrazione continua con TFS BuildIntegrazione continua con TFS Build
Integrazione continua con TFS Build
 
Mvvm
MvvmMvvm
Mvvm
 
Designing with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele Mondello
 
SUE AGILE MVVM (Italian)
SUE AGILE MVVM (Italian)SUE AGILE MVVM (Italian)
SUE AGILE MVVM (Italian)
 
Asp.NET MVC Framework
Asp.NET MVC FrameworkAsp.NET MVC Framework
Asp.NET MVC Framework
 
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
 
Win8@work - Windows 8 e MVVM
Win8@work - Windows 8 e MVVMWin8@work - Windows 8 e MVVM
Win8@work - Windows 8 e MVVM
 
Sviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle MonorailSviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle Monorail
 
Domain Driven Design e CQRS
Domain Driven Design e CQRSDomain Driven Design e CQRS
Domain Driven Design e CQRS
 
Web dynpro for abap 02
Web dynpro for abap 02Web dynpro for abap 02
Web dynpro for abap 02
 
Introduzione a MVVM e Caliburn.Micro
Introduzione a MVVM e Caliburn.MicroIntroduzione a MVVM e Caliburn.Micro
Introduzione a MVVM e Caliburn.Micro
 

MVVM senza fronzoli con Caliburn.Micro

Editor's Notes

  1. Ci piace, ma…
  2. Comunicazione ViewModel -> View Binding proprietàUso di INPC come comandi indirettiMVPEvent aggregatorComunicazione View -> ViewModelBinding proprietà ActionsEvent aggregatorCiclo di vita dei ViewModelNon garantito da XAMLView-First, Model-FirstUI CompositionView-Driven, Model-DrivenTemplating
  3. Associare le view con i VM- creazione istanze, impostazione DataContextRelay Command- istanziazione, aggancio e aggiornamento dei metodi «guardia»Binding-configurazione di binding mode, validazione e converter
  4. ConvenzioniView locationProperty binding + configurazioneAction bindingAuto templateUI thread marshalingNoioso ed error-proneUI compositionGuidare dal VMLegarsi a interfacceGestione Window/DialogGuidare da VMNo dipendenze da Sys.WinPlatform abstractionOperazioni asincroneEventiTestabilità
  5. Separazione Trigger/ActionAzione/Reazione, Causa/EffettoPiù causeSintassi estesaBubblingParametri contestualiEsecuzione mediata
  6. Composizione dinamicaConductor<>, .Collection.OneActive, .AllActiveCambiare schermoAggiungere o rimuovere da un setPannelli multipliCiclo di vitaInizializzazione/ChiusuraAttivazioneConsenso alla chiusura- Asincrono!Window Manager
  7. Task singoloRappresentazione con oggettoEsecuzioneAltri prima e dopoLa freccia è il tempo
  8. Esecuzione sequenziale sincronaSequenzaNessuno spazio per altriSi blocca la UI
  9. Esecuzione sequenziale asincronaInizio, fineC’è spazio per altri
  10. CreazioneArray (tutto insieme)Iterator (lazy)