SlideShare a Scribd company logo
1 of 29
Download to read offline
Alessandro Andreosè
Laureando in Ingegneria Informatica
   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
   Interfaccia utente
    ◦ Elevata user experience
       WPF
    ◦ Modulare
       UI Composition
    ◦ Testabile e manutenibile
       MVVM
   Applicazione Desktop
   Ambiente Client e Server Microsoft
    ◦ IIS 7.0
    ◦ Framework .NET 3.5 SP1
    ◦ SQL Server 2008
   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
   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
WF          Direct
                    WF   PDF          WMP            WPF
                               GDI+          3D
Interfaccia
grafica
                    X                                X
Lettura documenti
a video             X                                X
Stampa di
documenti                X                           X
Immagini                        X                    X
Media                                 X              X
Grafica 2D                      X                    X
Grafica 3D                                    X      X
Expression Blend                               Visual Studio
   XAML                                                    …
                                                            <Button Background=“Red”>

    ◦ Linguaggio di Markup
                                                             No
                                                            </Button>
                                                            …
    ◦ 1 elemento, 1 oggetto .NET
    ◦ Il nome del tag è il nome della classe
                                                                     XAML


                                             Designer                                    Developer

   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
   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
   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
   Svilippo di un Toolkit per agevolare la
    realizzazione di applicazioni desktop
    ◦ Basato su MVVM
      DataBinding
      Command
      Broker
    ◦ Basato su UI Composition
      Module
      Region
      Shell
   No MVVM




   Sì MVVM
   la finestra View1 ha un bottone,
    ◦ al clic bisogna scrivere in una TextBox "Bottone
      premuto"
No MVVM




Sì MVVM
   una finestra, View1 ha un bottone
    ◦ Al clic si deve visualizzare un'altra finestra, View2




      No MVVM
VM1 conosce VM2
VM1 crea VM2 e non View2
   Attore terzo
    ◦ In mezzo tra 2 attori
      (VM1, VM2)
    ◦ Rispecchia il pattern
      evento – sottoscrizione             VM1 richiede View2



                                                      Il broker
                                                      crea VM2
   Azioni
    ◦ Dispatch messaggio
    ◦ Sottoscrizione messaggio
    ◦ Cancellazione sottoscrizione   VM2 visualizza View2
   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
   Modulo                                        SHELL
    ◦ Parte di applicazione
    ◦ Generalmente visuale          REGION 1                REGION 2
   Region                       Modulo 5

    ◦ Contiene moduli             Modulo 4
                                    Modulo 3
                                                             Modulo 6

      visuali                        Modulo 2

    Shell
                                      Modulo 1

    ◦ Finestra principale       Modulo 8
                                                 REGION 3
                                                                 Modulo 9
                                                 Modulo 7
    ◦ 1 sola shell
    ◦ contiene 1 o più region
   nella finestra principale (Shell)
    ◦ si preme un bottone
    ◦ si deve inserire nella shell una view (View1)
No UI Composition




                      logica inserimento modulo        creazione modulo


Sì UI Composition
              Shell                    RegionManager         Container di IoC

             REGION
                                           View1                    …
              View1
                                                                  View1
                          Show View1                                …



                         logica inserimento modulo         creazione modulo
   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
   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
   Gestione palestre
    ◦ Assegnazione turni
      Società
      Palestra
      Custode
    ◦ Pagamento utilizzo palestra
      Società
      Custode
DB Server DC   Web Server




                                 Client

Client     Client    Client
   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
   Toolkit
    ◦ Nuove region
    ◦ Sistema di validazione e focus
    ◦ Undo & Redo



   Applicazione (core già in produzione)
    ◦ Terminare il porting in produzione
    ◦ Bug Fixing
   DB
    ◦ 30 tabelle


   Software
    ◦ 18 progetti VisualStudio
    ◦ 500+ Unit Test
    ◦ 16.000+ righe di codice

More Related Content

Viewers also liked

Iter documentale per gli iscritti alla sezione E del RUI (collaborazione con ...
Iter documentale per gli iscritti alla sezione E del RUI (collaborazione con ...Iter documentale per gli iscritti alla sezione E del RUI (collaborazione con ...
Iter documentale per gli iscritti alla sezione E del RUI (collaborazione con ...Fabrizio Callarà
 
Model-View-ViewModel
Model-View-ViewModelModel-View-ViewModel
Model-View-ViewModelDotNetMarche
 
Writing apps for android with .net
Writing apps for android with .net Writing apps for android with .net
Writing apps for android with .net Leonardo Alario
 
Silverlight m v-vm @ DotNetteria
Silverlight m v-vm @ DotNetteriaSilverlight m v-vm @ DotNetteria
Silverlight m v-vm @ DotNetteriaMauro Servienti
 
UI Composition - Prism
UI Composition - PrismUI Composition - Prism
UI Composition - PrismDotNetMarche
 
Agenzia corrispondente dei Lloyd's per la sottoscrizione dei rischi di respon...
Agenzia corrispondente dei Lloyd's per la sottoscrizione dei rischi di respon...Agenzia corrispondente dei Lloyd's per la sottoscrizione dei rischi di respon...
Agenzia corrispondente dei Lloyd's per la sottoscrizione dei rischi di respon...Fabrizio Callarà
 
Polizze Obbligatorie di Responsabilità Civile Generale di Federico Capoluongo...
Polizze Obbligatorie di Responsabilità Civile Generale di Federico Capoluongo...Polizze Obbligatorie di Responsabilità Civile Generale di Federico Capoluongo...
Polizze Obbligatorie di Responsabilità Civile Generale di Federico Capoluongo...Fabrizio Callarà
 
Plurimandato Aec Uw 2008 Marche
Plurimandato Aec Uw 2008 MarchePlurimandato Aec Uw 2008 Marche
Plurimandato Aec Uw 2008 MarcheFabrizio Callarà
 
Presentazione istituzionale verticale pad_settembre_2015
Presentazione istituzionale verticale pad_settembre_2015Presentazione istituzionale verticale pad_settembre_2015
Presentazione istituzionale verticale pad_settembre_2015Andrea Costa
 
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 2015Codemotion
 
Nakov at Fuck Up Nights - July 2015 @ Sofia
Nakov at Fuck Up Nights - July 2015 @ SofiaNakov at Fuck Up Nights - July 2015 @ Sofia
Nakov at Fuck Up Nights - July 2015 @ SofiaSvetlin Nakov
 
SUE AGILE MVVM (Italian)
SUE AGILE MVVM (Italian)SUE AGILE MVVM (Italian)
SUE AGILE MVVM (Italian)Sabino Labarile
 
Ramo Cauzioni: evoluzione storica ed attuali difficoltà di sottoscrizione
Ramo Cauzioni: evoluzione storica ed attuali difficoltà di sottoscrizioneRamo Cauzioni: evoluzione storica ed attuali difficoltà di sottoscrizione
Ramo Cauzioni: evoluzione storica ed attuali difficoltà di sottoscrizionePasquale Falzarano
 
Следвай вдъхновението си! (фестивал "Свободата да бъдеш - април 2016")
Следвай вдъхновението си! (фестивал "Свободата да бъдеш - април 2016")Следвай вдъхновението си! (фестивал "Свободата да бъдеш - април 2016")
Следвай вдъхновението си! (фестивал "Свободата да бъдеш - април 2016")Svetlin Nakov
 
Introduzione a MVVM e Caliburn.Micro
Introduzione a MVVM e Caliburn.MicroIntroduzione a MVVM e Caliburn.Micro
Introduzione a MVVM e Caliburn.MicroMassimo Bonanni
 

Viewers also liked (20)

Iter documentale per gli iscritti alla sezione E del RUI (collaborazione con ...
Iter documentale per gli iscritti alla sezione E del RUI (collaborazione con ...Iter documentale per gli iscritti alla sezione E del RUI (collaborazione con ...
Iter documentale per gli iscritti alla sezione E del RUI (collaborazione con ...
 
Model-View-ViewModel
Model-View-ViewModelModel-View-ViewModel
Model-View-ViewModel
 
Writing apps for android with .net
Writing apps for android with .net Writing apps for android with .net
Writing apps for android with .net
 
Silverlight m v-vm @ DotNetteria
Silverlight m v-vm @ DotNetteriaSilverlight m v-vm @ DotNetteria
Silverlight m v-vm @ DotNetteria
 
WPF 4 fun
WPF 4 funWPF 4 fun
WPF 4 fun
 
WPF MVVM Toolkit
WPF MVVM ToolkitWPF MVVM Toolkit
WPF MVVM Toolkit
 
UI Composition - Prism
UI Composition - PrismUI Composition - Prism
UI Composition - Prism
 
m-v-vm @ dotNetMarche
m-v-vm @ dotNetMarchem-v-vm @ dotNetMarche
m-v-vm @ dotNetMarche
 
Agenzia corrispondente dei Lloyd's per la sottoscrizione dei rischi di respon...
Agenzia corrispondente dei Lloyd's per la sottoscrizione dei rischi di respon...Agenzia corrispondente dei Lloyd's per la sottoscrizione dei rischi di respon...
Agenzia corrispondente dei Lloyd's per la sottoscrizione dei rischi di respon...
 
Polizze Obbligatorie di Responsabilità Civile Generale di Federico Capoluongo...
Polizze Obbligatorie di Responsabilità Civile Generale di Federico Capoluongo...Polizze Obbligatorie di Responsabilità Civile Generale di Federico Capoluongo...
Polizze Obbligatorie di Responsabilità Civile Generale di Federico Capoluongo...
 
Plurimandato Aec Uw 2008 Marche
Plurimandato Aec Uw 2008 MarchePlurimandato Aec Uw 2008 Marche
Plurimandato Aec Uw 2008 Marche
 
Presentazione istituzionale verticale pad_settembre_2015
Presentazione istituzionale verticale pad_settembre_2015Presentazione istituzionale verticale pad_settembre_2015
Presentazione istituzionale verticale pad_settembre_2015
 
La Revisione Legale - UIA s.r.l. Undewriting Insurance Agency
La Revisione Legale - UIA s.r.l. Undewriting Insurance AgencyLa Revisione Legale - UIA s.r.l. Undewriting Insurance Agency
La Revisione Legale - UIA s.r.l. Undewriting Insurance Agency
 
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
 
Nakov at Fuck Up Nights - July 2015 @ Sofia
Nakov at Fuck Up Nights - July 2015 @ SofiaNakov at Fuck Up Nights - July 2015 @ Sofia
Nakov at Fuck Up Nights - July 2015 @ Sofia
 
System.AddIn @ Xe.Net
System.AddIn @ Xe.NetSystem.AddIn @ Xe.Net
System.AddIn @ Xe.Net
 
SUE AGILE MVVM (Italian)
SUE AGILE MVVM (Italian)SUE AGILE MVVM (Italian)
SUE AGILE MVVM (Italian)
 
Ramo Cauzioni: evoluzione storica ed attuali difficoltà di sottoscrizione
Ramo Cauzioni: evoluzione storica ed attuali difficoltà di sottoscrizioneRamo Cauzioni: evoluzione storica ed attuali difficoltà di sottoscrizione
Ramo Cauzioni: evoluzione storica ed attuali difficoltà di sottoscrizione
 
Следвай вдъхновението си! (фестивал "Свободата да бъдеш - април 2016")
Следвай вдъхновението си! (фестивал "Свободата да бъдеш - април 2016")Следвай вдъхновението си! (фестивал "Свободата да бъдеш - април 2016")
Следвай вдъхновението си! (фестивал "Свободата да бъдеш - април 2016")
 
Introduzione a MVVM e Caliburn.Micro
Introduzione a MVVM e Caliburn.MicroIntroduzione a MVVM e Caliburn.Micro
Introduzione a MVVM e Caliburn.Micro
 

Similar to WPF MVVM Toolkit

Come sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLCome sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLSinergia Totale
 
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 Appscodeblock
 
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 iOSDan Ardelean
 
Webkit presentazione ufficiale
Webkit presentazione ufficialeWebkit presentazione ufficiale
Webkit presentazione ufficialeintoinside
 
Framework per la realizzazione di ria
Framework per la realizzazione di riaFramework per la realizzazione di ria
Framework per la realizzazione di riaLorenzo Bortolotto
 
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.jsAndrea Dottor
 
Idiomatic Domain Driven Design
Idiomatic Domain Driven DesignIdiomatic Domain Driven Design
Idiomatic Domain Driven DesignAndrea Saltarello
 
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.jsGiorgio Di Nardo
 
Model View Controller - Semplificare Il Codice E Minimizzare I Tempi
Model View Controller - Semplificare Il Codice E Minimizzare I TempiModel View Controller - Semplificare Il Codice E Minimizzare I Tempi
Model View Controller - Semplificare Il Codice E Minimizzare I TempiMarco Parenzan
 
Zend Framework Workshop Parte1
Zend Framework Workshop Parte1Zend Framework Workshop Parte1
Zend Framework Workshop Parte1massimiliano.wosz
 
Xcode - Just do it
Xcode - Just do itXcode - Just do it
Xcode - Just do itpragmamark
 
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 MVVMCodemotion
 
Aruba Cloud: 5 minuti sul VisualCloud #Arubait5
Aruba Cloud: 5 minuti sul VisualCloud #Arubait5Aruba Cloud: 5 minuti sul VisualCloud #Arubait5
Aruba Cloud: 5 minuti sul VisualCloud #Arubait5Aruba S.p.A.
 
Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto
 Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto
Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progettoMicrosoft Mobile Developer
 

Similar to WPF MVVM Toolkit (20)

Come sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLCome sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTML
 
Rich Internet Application
Rich Internet ApplicationRich Internet Application
Rich Internet Application
 
UI Composition
UI CompositionUI Composition
UI Composition
 
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
 
Webkit presentazione ufficiale
Webkit presentazione ufficialeWebkit presentazione ufficiale
Webkit presentazione ufficiale
 
Web dynpro for abap 02
Web dynpro for abap 02Web dynpro for abap 02
Web dynpro for abap 02
 
Framework per la realizzazione di ria
Framework per la realizzazione di riaFramework per la realizzazione di ria
Framework per la realizzazione di ria
 
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
 
Idiomatic Domain Driven Design
Idiomatic Domain Driven DesignIdiomatic Domain Driven Design
Idiomatic Domain Driven Design
 
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
 
Model View Controller - Semplificare Il Codice E Minimizzare I Tempi
Model View Controller - Semplificare Il Codice E Minimizzare I TempiModel View Controller - Semplificare Il Codice E Minimizzare I Tempi
Model View Controller - Semplificare Il Codice E Minimizzare I Tempi
 
Mobile UI Design
Mobile UI DesignMobile UI Design
Mobile UI Design
 
Zend Framework Workshop Parte1
Zend Framework Workshop Parte1Zend Framework Workshop Parte1
Zend Framework Workshop Parte1
 
Xcode - Just do it
Xcode - Just do itXcode - Just do it
Xcode - Just do it
 
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
 
Xamarin
XamarinXamarin
Xamarin
 
Aruba Cloud: 5 minuti sul VisualCloud #Arubait5
Aruba Cloud: 5 minuti sul VisualCloud #Arubait5Aruba Cloud: 5 minuti sul VisualCloud #Arubait5
Aruba Cloud: 5 minuti sul VisualCloud #Arubait5
 
Introduzione ad Android
Introduzione ad AndroidIntroduzione ad Android
Introduzione ad Android
 
Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto
 Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto
Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto
 

WPF MVVM Toolkit

  • 1. Alessandro Andreosè Laureando in Ingegneria Informatica
  • 2. 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
  • 3. Interfaccia utente ◦ Elevata user experience   WPF ◦ Modulare   UI Composition ◦ Testabile e manutenibile   MVVM
  • 4. Applicazione Desktop  Ambiente Client e Server Microsoft ◦ IIS 7.0 ◦ Framework .NET 3.5 SP1 ◦ SQL Server 2008
  • 5. 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
  • 6. 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
  • 7. WF Direct WF PDF WMP WPF GDI+ 3D Interfaccia grafica X X Lettura documenti a video X X Stampa di documenti X X Immagini X X Media X X Grafica 2D X X Grafica 3D X X
  • 8. Expression Blend Visual Studio  XAML … <Button Background=“Red”> ◦ Linguaggio di Markup No </Button> … ◦ 1 elemento, 1 oggetto .NET ◦ Il nome del tag è il nome della classe XAML Designer Developer  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
  • 9. 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
  • 10. 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
  • 11. Svilippo di un Toolkit per agevolare la realizzazione di applicazioni desktop ◦ Basato su MVVM  DataBinding  Command  Broker ◦ Basato su UI Composition  Module  Region  Shell
  • 12. No MVVM  Sì MVVM
  • 13. la finestra View1 ha un bottone, ◦ al clic bisogna scrivere in una TextBox "Bottone premuto"
  • 15. una finestra, View1 ha un bottone ◦ Al clic si deve visualizzare un'altra finestra, View2 No MVVM
  • 16. VM1 conosce VM2 VM1 crea VM2 e non View2
  • 17. Attore terzo ◦ In mezzo tra 2 attori (VM1, VM2) ◦ Rispecchia il pattern evento – sottoscrizione VM1 richiede View2 Il broker crea VM2  Azioni ◦ Dispatch messaggio ◦ Sottoscrizione messaggio ◦ Cancellazione sottoscrizione VM2 visualizza View2
  • 18. 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
  • 19. Modulo SHELL ◦ Parte di applicazione ◦ Generalmente visuale REGION 1 REGION 2  Region Modulo 5 ◦ Contiene moduli Modulo 4 Modulo 3 Modulo 6 visuali Modulo 2 Shell Modulo 1  ◦ Finestra principale Modulo 8 REGION 3 Modulo 9 Modulo 7 ◦ 1 sola shell ◦ contiene 1 o più region
  • 20. nella finestra principale (Shell) ◦ si preme un bottone ◦ si deve inserire nella shell una view (View1)
  • 21. No UI Composition logica inserimento modulo creazione modulo Sì UI Composition Shell RegionManager Container di IoC REGION View1 … View1 View1 Show View1 … logica inserimento modulo creazione modulo
  • 22. 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
  • 23. 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
  • 24. Gestione palestre ◦ Assegnazione turni  Società  Palestra  Custode ◦ Pagamento utilizzo palestra  Società  Custode
  • 25. DB Server DC Web Server Client Client Client Client
  • 26.
  • 27. 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
  • 28. Toolkit ◦ Nuove region ◦ Sistema di validazione e focus ◦ Undo & Redo  Applicazione (core già in produzione) ◦ Terminare il porting in produzione ◦ Bug Fixing
  • 29. DB ◦ 30 tabelle  Software ◦ 18 progetti VisualStudio ◦ 500+ Unit Test ◦ 16.000+ righe di codice