SlideShare ist ein Scribd-Unternehmen logo
1 von 29
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Andere mochten auch

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
 
Следвай вдъхновението си! (фестивал "Свободата да бъдеш - април 2016")
Следвай вдъхновението си! (фестивал "Свободата да бъдеш - април 2016")Следвай вдъхновението си! (фестивал "Свободата да бъдеш - април 2016")
Следвай вдъхновението си! (фестивал "Свободата да бъдеш - април 2016")Svetlin Nakov
 
Професия "програмист"
Професия "програмист"Професия "програмист"
Професия "програмист"Svetlin Nakov
 
Dependency Injection and Inversion Of Control
Dependency Injection and Inversion Of ControlDependency Injection and Inversion Of Control
Dependency Injection and Inversion Of ControlSimone Busoli
 
Inversion of Control @ CD2008
Inversion of Control @ CD2008Inversion of Control @ CD2008
Inversion of Control @ CD2008Mauro Servienti
 
Model-View-ViewModel
Model-View-ViewModelModel-View-ViewModel
Model-View-ViewModelDotNetMarche
 
Как да станем софтуерни инженери и да стартираме ИТ бизнес?
Как да станем софтуерни инженери и да стартираме ИТ бизнес?Как да станем софтуерни инженери и да стартираме ИТ бизнес?
Как да станем софтуерни инженери и да стартираме ИТ бизнес?Svetlin Nakov
 
Работа с Естествен Интелект – Личност – Време – 3 юли 2013 @ НЛП клуб
Работа с Естествен Интелект – Личност – Време – 3 юли 2013 @ НЛП клубРабота с Естествен Интелект – Личност – Време – 3 юли 2013 @ НЛП клуб
Работа с Естествен Интелект – Личност – Време – 3 юли 2013 @ НЛП клубSvetlin Nakov
 
Regular Expressions: QA Challenge Accepted Conf (March 2015)
Regular Expressions: QA Challenge Accepted Conf (March 2015)Regular Expressions: QA Challenge Accepted Conf (March 2015)
Regular Expressions: QA Challenge Accepted Conf (March 2015)Svetlin Nakov
 
Architetttura Della Soluzione
Architetttura Della SoluzioneArchitetttura Della Soluzione
Architetttura Della SoluzioneLuca Milan
 
Entity Framework: Nakov @ BFU Hackhaton 2015
Entity Framework: Nakov @ BFU Hackhaton 2015Entity Framework: Nakov @ BFU Hackhaton 2015
Entity Framework: Nakov @ BFU Hackhaton 2015Svetlin Nakov
 
Architectural Patterns and Software Architectures: Client-Server, Multi-Tier,...
Architectural Patterns and Software Architectures: Client-Server, Multi-Tier,...Architectural Patterns and Software Architectures: Client-Server, Multi-Tier,...
Architectural Patterns and Software Architectures: Client-Server, Multi-Tier,...Svetlin Nakov
 
Design pattern architetturali Model View Controller, MVP e MVVM
Design pattern architetturali   Model View Controller, MVP e MVVMDesign pattern architetturali   Model View Controller, MVP e MVVM
Design pattern architetturali Model View Controller, MVP e MVVMRiccardo Cardin
 
Design Pattern Architetturali - Dependency Injection
Design Pattern Architetturali - Dependency InjectionDesign Pattern Architetturali - Dependency Injection
Design Pattern Architetturali - Dependency InjectionRiccardo Cardin
 

Andere mochten auch (20)

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
 
System.AddIn @ Xe.Net
System.AddIn @ Xe.NetSystem.AddIn @ Xe.Net
System.AddIn @ Xe.Net
 
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
 
Следвай вдъхновението си! (фестивал "Свободата да бъдеш - април 2016")
Следвай вдъхновението си! (фестивал "Свободата да бъдеш - април 2016")Следвай вдъхновението си! (фестивал "Свободата да бъдеш - април 2016")
Следвай вдъхновението си! (фестивал "Свободата да бъдеш - април 2016")
 
Професия "програмист"
Професия "програмист"Професия "програмист"
Професия "програмист"
 
Dependency Injection and Inversion Of Control
Dependency Injection and Inversion Of ControlDependency Injection and Inversion Of Control
Dependency Injection and Inversion Of Control
 
Inversion of Control @ CD2008
Inversion of Control @ CD2008Inversion of Control @ CD2008
Inversion of Control @ CD2008
 
Model-View-ViewModel
Model-View-ViewModelModel-View-ViewModel
Model-View-ViewModel
 
Как да станем софтуерни инженери и да стартираме ИТ бизнес?
Как да станем софтуерни инженери и да стартираме ИТ бизнес?Как да станем софтуерни инженери и да стартираме ИТ бизнес?
Как да станем софтуерни инженери и да стартираме ИТ бизнес?
 
Работа с Естествен Интелект – Личност – Време – 3 юли 2013 @ НЛП клуб
Работа с Естествен Интелект – Личност – Време – 3 юли 2013 @ НЛП клубРабота с Естествен Интелект – Личност – Време – 3 юли 2013 @ НЛП клуб
Работа с Естествен Интелект – Личност – Време – 3 юли 2013 @ НЛП клуб
 
Regular Expressions: QA Challenge Accepted Conf (March 2015)
Regular Expressions: QA Challenge Accepted Conf (March 2015)Regular Expressions: QA Challenge Accepted Conf (March 2015)
Regular Expressions: QA Challenge Accepted Conf (March 2015)
 
Architetttura Della Soluzione
Architetttura Della SoluzioneArchitetttura Della Soluzione
Architetttura Della Soluzione
 
UI Composition
UI CompositionUI Composition
UI Composition
 
Dependency Injection
Dependency InjectionDependency Injection
Dependency Injection
 
Entity Framework: Nakov @ BFU Hackhaton 2015
Entity Framework: Nakov @ BFU Hackhaton 2015Entity Framework: Nakov @ BFU Hackhaton 2015
Entity Framework: Nakov @ BFU Hackhaton 2015
 
WPF MVVM Toolkit
WPF MVVM ToolkitWPF MVVM Toolkit
WPF MVVM Toolkit
 
Architectural Patterns and Software Architectures: Client-Server, Multi-Tier,...
Architectural Patterns and Software Architectures: Client-Server, Multi-Tier,...Architectural Patterns and Software Architectures: Client-Server, Multi-Tier,...
Architectural Patterns and Software Architectures: Client-Server, Multi-Tier,...
 
Design pattern architetturali Model View Controller, MVP e MVVM
Design pattern architetturali   Model View Controller, MVP e MVVMDesign pattern architetturali   Model View Controller, MVP e MVVM
Design pattern architetturali Model View Controller, MVP e MVVM
 
Design Pattern Architetturali - Dependency Injection
Design Pattern Architetturali - Dependency InjectionDesign Pattern Architetturali - Dependency Injection
Design Pattern Architetturali - Dependency Injection
 
Layered Software Architecture
Layered Software ArchitectureLayered Software Architecture
Layered Software Architecture
 

Ähnlich wie Slide Prelaurea. Alessandro Andreosè

Niccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWTNiccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWTfirenze-gtug
 
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
 
Idiomatic Domain Driven Design
Idiomatic Domain Driven DesignIdiomatic Domain Driven Design
Idiomatic Domain Driven DesignAndrea Saltarello
 
Cert04 70-484 - essentials of developing windows store apps
Cert04   70-484 - essentials of developing windows store appsCert04   70-484 - essentials of developing windows store apps
Cert04 70-484 - essentials of developing windows store appsDotNetCampus
 
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
 
Flutter: Google alla conquista del mobile multi piattaforma
Flutter: Google alla conquista del mobile multi piattaformaFlutter: Google alla conquista del mobile multi piattaforma
Flutter: Google alla conquista del mobile multi piattaformaCommit University
 

Ähnlich wie Slide Prelaurea. Alessandro Andreosè (20)

Niccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWTNiccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWT
 
Rich Internet Application
Rich Internet ApplicationRich Internet Application
Rich Internet Application
 
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
 
Idiomatic Domain Driven Design
Idiomatic Domain Driven DesignIdiomatic Domain Driven Design
Idiomatic Domain Driven Design
 
Cert04 70-484 - essentials of developing windows store apps
Cert04   70-484 - essentials of developing windows store appsCert04   70-484 - essentials of developing windows store apps
Cert04 70-484 - essentials of developing windows store apps
 
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
 
Flutter: Google alla conquista del mobile multi piattaforma
Flutter: Google alla conquista del mobile multi piattaformaFlutter: Google alla conquista del mobile multi piattaforma
Flutter: Google alla conquista del mobile multi piattaforma
 

Slide Prelaurea. Alessandro Andreosè

  • 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