SlideShare a Scribd company logo
1 of 23
Windows 8 e MVVM
      Marco Amendola
  marcoamendola.wordpress.com
blogs.ugidotnet.org/marcoamendola
marco.amendola@domusdotnet.org
         @marcoamendola
Cosa vedremo?

 • MVVM: cosa cambia con Xaml su WinRT?
 • Cos’è MVVM e perché si usa

 • Caliburn.Micro per WinRT: struttura, vantaggi
   tecnici e qualitativi
  •   Binding delle proprietà del ViewModel
  •   Avvio di azioni; azioni asincrone
  •   UI composition
  •   Unit test
Windows 8 e MVVM




     MVVM. Ancora?!
    Ma è una fissazione!
Windows 8 e MVVM


Quanto e come cambia
MVVM applicato a Xaml su
WinRT?

 • Differenze dovute al markup
 • Differenze dovute al runtime
 • Differenze nel modello
   applicativo
Cos’è MVVM e perché si usa


E’ un pattern
 Indica una impostazione
 sperimentata e conveniente

L’uso in contesti Enterprise
ha dimostrato che facilita:
 • Qualità
 • Manutenibilità
 • Modularità
Cos’è MVVM e perché si usa

Strumenti per app. LOB
 • MVVM, Caliburn.Micro, Fody


Rinforzo positivo di buone
pratiche e convenzioni
 • Convention over
   Configuration
 • Inversion of Control
 • Testabilità
Windows 8 e MVVM




                   @Work
    Struttura di una soluzione Caliburn.Micro
Windows 8 e MVVM


Binding delle proprietà

 • del DataModel: il classico
   utilizzo per la presentazione
   di dati
 • dello Screen: pattern
   Presentation Model (la View
   replica lo stato del Model)
Windows 8 e MVVM




                   @Work
      Diversi tipi di binding delle proprietà
                   Convenzioni
   Casi «pelosi» con proprietà non «bindabili»
Windows 8 e MVVM


  INotifyPropertyChanged?
 Fody. E potete dimenticarvene.
Windows 8 e MVVM




               @Work
             Test su notifica
Windows 8 e MVVM




 Cos’è allora il ViewModel?
       Vista del Modello
     o Modello della Vista
Windows 8 e MVVM


Avvio di attività

 • approccio tipico:
   Commands.

 • Caliburn.Micro: convenzioni.
   E se non basta: messaggi.
Windows 8 e MVVM




                  @Work
       Avvio di azioni con Caliburn.Micro
        Convenzioni e ActionMessages
          Test sulle funzioni «guard»
Windows 8 e MVVM


Azioni asincrone
 • Async/Await risolve
   elegantemente un problema
   complesso (“bagno di
   sangue”)
 • Percorso sequenziale
   visibile, ma composto da
   passi potenzialmente
   asincroni e di lunga durata
Windows 8 e MVVM




                @Work
             Azioni asincrone
              Gestione errori
Windows 8 e MVVM


UI Composition

 • “Subroutine” per l’interfaccia
   utente
 • Templating
 • VM esposti da proprietà
   modificate a runtime
Windows 8 e MVVM


UI Composition

 • Occorre gestire il ciclo di vita
   dei View Model

 • Appication Model
Windows 8 e MVVM




                  @Work
      UI Composition e Application Model
Cosa abbiamo visto*
*se non ho sforato i tempi




      • MVVM: cosa cambia con Xaml su WinRT?
      • Cos’è MVVM e perché si usa

      • Caliburn.Micro per WinRT: struttura, vantaggi
        tecnici e qualitativi
          •       Binding delle proprietà del ViewModel
          •       Avvio di azioni; azioni asincrone
          •       UI composition
          •       Unit test
Windows 8 e MVVM




    Domande?
Link utili


caliburnmicro.codeplex.com

github.com/SimonCropp/Fody
Grazie agli sponsor

More Related Content

Similar to Win8@work - Windows 8 e MVVM

Microservices webinar EMEA Aug. 2017
Microservices webinar EMEA Aug. 2017Microservices webinar EMEA Aug. 2017
Microservices webinar EMEA Aug. 2017
MongoDB
 
Realizzazione di Microservizi con Docker, Kubernetes, Kafka e Mongodb
Realizzazione di Microservizi con Docker, Kubernetes, Kafka e MongodbRealizzazione di Microservizi con Docker, Kubernetes, Kafka e Mongodb
Realizzazione di Microservizi con Docker, Kubernetes, Kafka e Mongodb
MongoDB
 
Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015
Codemotion
 
Sviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRailSviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRail
Stefano Ottaviani
 
MVVMCross da Windows Phone a Windows 8 passando per Android e iOS
MVVMCross da Windows Phone a Windows 8 passando per Android e iOSMVVMCross da Windows Phone a Windows 8 passando per Android e iOS
MVVMCross da Windows Phone a Windows 8 passando per Android e iOS
Dan Ardelean
 
Web Api – The HTTP Way
Web Api – The HTTP WayWeb Api – The HTTP Way
Web Api – The HTTP Way
Luca Milan
 
Slide typescript - net campus
Slide typescript - net campusSlide typescript - net campus
Slide typescript - net campus
DotNetCampus
 

Similar to Win8@work - Windows 8 e MVVM (20)

Dal requisito all'implementazione @ CD2010
Dal requisito all'implementazione @ CD2010Dal requisito all'implementazione @ CD2010
Dal requisito all'implementazione @ CD2010
 
Microservices webinar EMEA Aug. 2017
Microservices webinar EMEA Aug. 2017Microservices webinar EMEA Aug. 2017
Microservices webinar EMEA Aug. 2017
 
Realizzazione di Microservizi con Docker, Kubernetes, Kafka e Mongodb
Realizzazione di Microservizi con Docker, Kubernetes, Kafka e MongodbRealizzazione di Microservizi con Docker, Kubernetes, Kafka e Mongodb
Realizzazione di Microservizi con Docker, Kubernetes, Kafka e Mongodb
 
Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015
 
Sviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRailSviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRail
 
Il pattern mvvm come strutturare al meglio il vostro progetto
Il pattern mvvm come strutturare al meglio il vostro progettoIl pattern mvvm come strutturare al meglio il vostro progetto
Il pattern mvvm come strutturare al meglio il vostro progetto
 
Web dynpro for abap 02
Web dynpro for abap 02Web dynpro for abap 02
Web dynpro for abap 02
 
Alessandro Forte - MVP vs MVC
Alessandro Forte - MVP vs MVCAlessandro Forte - MVP vs MVC
Alessandro Forte - MVP vs MVC
 
SUE AGILE Framework (Italiano)
SUE AGILE Framework (Italiano)SUE AGILE Framework (Italiano)
SUE AGILE Framework (Italiano)
 
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
 
MVVMCross da Windows Phone a Windows 8 passando per Android e iOS
MVVMCross da Windows Phone a Windows 8 passando per Android e iOSMVVMCross da Windows Phone a Windows 8 passando per Android e iOS
MVVMCross da Windows Phone a Windows 8 passando per Android e iOS
 
ASP.NET MVC: sfruttare la piattaforma al 100%
ASP.NET MVC: sfruttare la piattaforma al 100%ASP.NET MVC: sfruttare la piattaforma al 100%
ASP.NET MVC: sfruttare la piattaforma al 100%
 
Web Api – The HTTP Way
Web Api – The HTTP WayWeb Api – The HTTP Way
Web Api – The HTTP Way
 
ASP.NET MVC: Andare oltre il 100% (Web@work)
ASP.NET MVC: Andare oltre il 100% (Web@work)ASP.NET MVC: Andare oltre il 100% (Web@work)
ASP.NET MVC: Andare oltre il 100% (Web@work)
 
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLDTYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
 
Slide typescript - net campus
Slide typescript - net campusSlide typescript - net campus
Slide typescript - net campus
 
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
 
Le 7 sfide da affrontare nella migrazione da monolite a miniservizi
Le 7 sfide da affrontare nella migrazione da monolite a miniserviziLe 7 sfide da affrontare nella migrazione da monolite a miniservizi
Le 7 sfide da affrontare nella migrazione da monolite a miniservizi
 
OpenDevSecOps 2019 - Open devsecops un caso di studio
OpenDevSecOps 2019 - Open devsecops un caso di studioOpenDevSecOps 2019 - Open devsecops un caso di studio
OpenDevSecOps 2019 - Open devsecops un caso di studio
 
Test e scrum un caso reale v3.2
Test e scrum   un caso reale v3.2Test e scrum   un caso reale v3.2
Test e scrum un caso reale v3.2
 

Recently uploaded

Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
lorenzodemidio01
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
lorenzodemidio01
 
Adducchio.Samuel-Steve_Jobs.ppppppppppptx
Adducchio.Samuel-Steve_Jobs.ppppppppppptxAdducchio.Samuel-Steve_Jobs.ppppppppppptx
Adducchio.Samuel-Steve_Jobs.ppppppppppptx
sasaselvatico
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....
giorgiadeascaniis59
 
Presentazione tre geni della tecnologia informatica
Presentazione tre geni della tecnologia informaticaPresentazione tre geni della tecnologia informatica
Presentazione tre geni della tecnologia informatica
nico07fusco
 

Recently uploaded (17)

CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...
CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...
CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...
 
LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................
 
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptxProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
 
Storia-CarloMagno-TeccarelliLorenzo.pptx
Storia-CarloMagno-TeccarelliLorenzo.pptxStoria-CarloMagno-TeccarelliLorenzo.pptx
Storia-CarloMagno-TeccarelliLorenzo.pptx
 
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
 
Tosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxTosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptx
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
 
Adducchio.Samuel-Steve_Jobs.ppppppppppptx
Adducchio.Samuel-Steve_Jobs.ppppppppppptxAdducchio.Samuel-Steve_Jobs.ppppppppppptx
Adducchio.Samuel-Steve_Jobs.ppppppppppptx
 
Una breve introduzione ad Elsa Morante, vita e opere
Una breve introduzione ad Elsa Morante, vita e opereUna breve introduzione ad Elsa Morante, vita e opere
Una breve introduzione ad Elsa Morante, vita e opere
 
Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....
 
TeccarelliLorenzo-i4stilidellapitturaromana.docx
TeccarelliLorenzo-i4stilidellapitturaromana.docxTeccarelliLorenzo-i4stilidellapitturaromana.docx
TeccarelliLorenzo-i4stilidellapitturaromana.docx
 
Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................
 
Presentazione tre geni della tecnologia informatica
Presentazione tre geni della tecnologia informaticaPresentazione tre geni della tecnologia informatica
Presentazione tre geni della tecnologia informatica
 
Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024
Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024
Esame di Stato 2024 - Materiale conferenza online 09 aprile 2024
 
TeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptx
TeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptxTeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptx
TeccarelliLorenzo-PrimadiSteveJobselasuaconcorrenza.pptx
 
TeccarelliLorenzo-Mitodella.cavernaa.pdf
TeccarelliLorenzo-Mitodella.cavernaa.pdfTeccarelliLorenzo-Mitodella.cavernaa.pdf
TeccarelliLorenzo-Mitodella.cavernaa.pdf
 

Win8@work - Windows 8 e MVVM

  • 1. Windows 8 e MVVM Marco Amendola marcoamendola.wordpress.com blogs.ugidotnet.org/marcoamendola marco.amendola@domusdotnet.org @marcoamendola
  • 2. Cosa vedremo? • MVVM: cosa cambia con Xaml su WinRT? • Cos’è MVVM e perché si usa • Caliburn.Micro per WinRT: struttura, vantaggi tecnici e qualitativi • Binding delle proprietà del ViewModel • Avvio di azioni; azioni asincrone • UI composition • Unit test
  • 3. Windows 8 e MVVM MVVM. Ancora?! Ma è una fissazione!
  • 4. Windows 8 e MVVM Quanto e come cambia MVVM applicato a Xaml su WinRT? • Differenze dovute al markup • Differenze dovute al runtime • Differenze nel modello applicativo
  • 5. Cos’è MVVM e perché si usa E’ un pattern Indica una impostazione sperimentata e conveniente L’uso in contesti Enterprise ha dimostrato che facilita: • Qualità • Manutenibilità • Modularità
  • 6. Cos’è MVVM e perché si usa Strumenti per app. LOB • MVVM, Caliburn.Micro, Fody Rinforzo positivo di buone pratiche e convenzioni • Convention over Configuration • Inversion of Control • Testabilità
  • 7. Windows 8 e MVVM @Work Struttura di una soluzione Caliburn.Micro
  • 8. Windows 8 e MVVM Binding delle proprietà • del DataModel: il classico utilizzo per la presentazione di dati • dello Screen: pattern Presentation Model (la View replica lo stato del Model)
  • 9. Windows 8 e MVVM @Work Diversi tipi di binding delle proprietà Convenzioni Casi «pelosi» con proprietà non «bindabili»
  • 10. Windows 8 e MVVM INotifyPropertyChanged? Fody. E potete dimenticarvene.
  • 11. Windows 8 e MVVM @Work Test su notifica
  • 12. Windows 8 e MVVM Cos’è allora il ViewModel? Vista del Modello o Modello della Vista
  • 13. Windows 8 e MVVM Avvio di attività • approccio tipico: Commands. • Caliburn.Micro: convenzioni. E se non basta: messaggi.
  • 14. Windows 8 e MVVM @Work Avvio di azioni con Caliburn.Micro Convenzioni e ActionMessages Test sulle funzioni «guard»
  • 15. Windows 8 e MVVM Azioni asincrone • Async/Await risolve elegantemente un problema complesso (“bagno di sangue”) • Percorso sequenziale visibile, ma composto da passi potenzialmente asincroni e di lunga durata
  • 16. Windows 8 e MVVM @Work Azioni asincrone Gestione errori
  • 17. Windows 8 e MVVM UI Composition • “Subroutine” per l’interfaccia utente • Templating • VM esposti da proprietà modificate a runtime
  • 18. Windows 8 e MVVM UI Composition • Occorre gestire il ciclo di vita dei View Model • Appication Model
  • 19. Windows 8 e MVVM @Work UI Composition e Application Model
  • 20. Cosa abbiamo visto* *se non ho sforato i tempi • MVVM: cosa cambia con Xaml su WinRT? • Cos’è MVVM e perché si usa • Caliburn.Micro per WinRT: struttura, vantaggi tecnici e qualitativi • Binding delle proprietà del ViewModel • Avvio di azioni; azioni asincrone • UI composition • Unit test
  • 21. Windows 8 e MVVM Domande?

Editor's Notes

  1. Chi conosce MVVM?Chilavorasu WPF/SL/XAML?
  2. A causadeicontesti in cui lavoro, mi interessaprincipalmentel’aspettoarchitetturale.Vi mostroperché serve, ha sensoed è rilevante per le applicazioniaziendali.Non solo per le demo e per le piccolo app, ma programmi con tanti moduli, quintali di funzioni, ceste di form dati.
  3. E’ importantenell’enterprisesia per l’evoluzione e per il cross-compilation.Le nuove app hanno UI miste WPF/RT, touch friendly e asincrone (fast & fluid)Markup: namespace differenti, sintassi alias, controllidifferentiRuntime: reflection (codicecondizionale), class library diversaModelloapplicativo: ciclo di vita (avvio, chiusura, sospensione/tombstoning)
  4. Non è un must: se ne può fare a meno. Peròusarlorendepiùgestibili le app complesse. Non necessariamentequellesemplici. Ma unavoltaabituati, non se ne può fare a meno.
  5. Strumentiutilinelle app enterprise Vantaggi di MVVM: ottimaorganizzazione del codice, SoC, espressivitàVantaggi di Caliburn.Micro: uniformitàtrapiattaformeXamlVantaggi di Fody: non sivede. CoC: comodo e al contemporigorosoIoC: vedi http://kozmic.pl/2012/10/23/ioc-container-solves-a-problem-you-might-not-have-but-its-a-nice-problem-to-have/Testing: lo vedremo DURANTE le demo.
  6. Cartelle. Convenzionedeinomidelle view, App.Test con isolamentointerfacciaIBackend
  7. Proprietà del DMTopicInfoView: evidenziare binding convenzionaleedesplicito. Demo: pulsante Mess Around che cambia ititoliProprietà del VM- TopicInfoView: binding a DisplayName. Demo: pulsante Mess Around che cambia ititoli- TopicInfoView: binding a IsBusy. Applicazione del PMBinding peloso: SelectedTopics
  8. Estension + Enable prj + NuGet
  9. Chiarimentosullanatura del VM. La secondaaccezionerende facile sostituire la vista (piattaforme o scenaridiversi)
  10. Funzionamento dei command. I messaggi come alternativepotentedei command (hanno + capacità: bubbling, contesto, DSL)
  11. Azioni semplici: HomeViewModel.MessAroundWithTilesMessaggio:GridView.ItemClickFunzioni Guard. Test
  12. Riferimento a sessione Massimo (non solo threading, ma overlapped I/O e UI)Parlaredellecoroutine come soluzione pre-4.5, come strato di compatibilità a ALTRI USI
  13. CartaPluralsight!