SlideShare une entreprise Scribd logo
1  sur  30
MVVMCross
da Windows Phone a Windows 8
  passando per Android e iOS




Dan ARDELEAN
Twitter: @danardelean
Email:
dan.ardelean@neologics.eu
Smartphones
  Operating   1Q12      1Q12 Market     1Q11      1Q11 Market
   System     Units      Share (%)      Units      Share (%)
Android        81,067.4          56.1    36,350.1          36.4

iOS            33,120.5          22.9    16,883.2          16.9

Symbian        12,466.9           8.6    27,598.5                27.7
Research In                       6.9                            13.0
Motion          9,939.3                  13,004.0
Bada            3,842.2           2.7      1,862.2                1.9

Microsoft       2,712.5           1.9      2,582.1                2.6
Altri           1,242.9           0.9      1,495.0                1.5
                                          Source: Gartner (April 2012)
Totale        144,391.7         100.0    99,775.0              100.0
                                         Source: Gartner (Maggio 2012)
Tablet

        OS    2011        2012       2013              2016
iOS           39.998      72.988     99.553           169.652
Android       17.292      37.878     61.684           137.657
Microsoft         0        4.863     14.547             43.648
QNX             807        2.643       6.036            17.836
Altri          1,919        510          637               464
Totale       60.017     118.883    182.457         369.258
                                   Source: Gartner (Aprile 2012)
Agenda

• C# per sviluppo mobile cross-platform

• Introduzione a MVVM e MVVMCross

• TwitterSearch

• Sqlite cross-platform

• Domande
C# per sviluppo mobile cross-platform

• Usando C# si può sviluppare per: Windows Phone, Windows 8,
  Android e iOS


• Possibilità di sfruttare features come: generics, linq, anonymous
  methods, async


• Possibilità di riutilizzare il codice


• Costi per lo sviluppo e la manutenzione del codice sorgenti più
  contenuti
Cosa serve – Windows Phone
• Windows 7

• Visual Studio 2010
  Express or Ultimate

• Account AppHub 99$

• Telefono
Cosa serve – Windows 8

• PC con Windows 8 RP

• Visual Studio 2012 RC

• Fare i lab di Win8
Cosa serve – Android
• Windows o Mac

• MonoDevelop o Visual
  Studio

• Mono for Android 399$

• Play account 25$
Cosa serve – iOS
• Mac

• MonoDevelop e XCode

• Mono for iOS 399$

• iOS account 99$

• MacIncloud
  http://www.macincloud.com
MVVM

           get/set
           proprietà




                        ViewModel
           commandi




                         ViewModel
                           ViewModel




                                                          Model
View




                                       Qualsiasi codice




                                                           Model
 View




                                       C#!




                                                            Model
   View




          notifiche
          messaggi
Implementare MVVM
•   Properties
•   INotifyPropertyChanged
•   INotifyCollectionChanged
•   Data Binding
•   IValueConverter
•   ICommand
•   UI Thread
Vantaggi MVVM
• Separazione tra BL e UI

• Più facile da testare

• MVVMCross riutilizzo codice cross-
  platform
MVVMCross
MVVMCross
Stuart Lodge (https://github.com/slodge/MvvmCross)


              get/set
              proprietà




                          ViewModel
              commandi




                           ViewModel
                             ViewModel




                                                               Model
  View




                                            Qualsiasi codice




                                                                Model
   View




                                            C#!




                                                                 Model
     View




             notifiche
             messaggi




  Codice
                                         Codice condiviso
 Specifico
TwitterSearch
Model & Service
HomeViewModel
TwitterViewModel
Windows Phone 7




• Niente C#, solo XAML con {Binding}
• Binding syntax includes:
•   {Binding Path, Converter=Converter,
    ConverterParameter=Parameter, Mode=Mode,
    FallbackValue=Fallback}
Android
• Niente C#, solo
  xml con attributi
  MvxBind


• La sintassi
  MvxBind è
  JSON con
  struttura XAML.
Xaml vs MvxBind
WP7:
 Text=‚{Binding SearchText,Mode=TwoWay}‛


Android:
         local:MvxBind=‚{‘Text’:
 {‘Path’:’SearchText’,’Mode’:’TwoWay’}}‛
Xaml vs MvxBind
WP7:
                Text=‚{Binding
Timestamp,Converter={StaticResource TimeAgo}}‛


Android:
            local:MvxBind=‚{‘Text’:
  {‘Path’:’Timestamp’,Converter’:’TimeAgo’}}‛
iPhone App
• UI in XML usando Xcode
• XIB collegato alle classe C# usando
  MonoTouch
• Binding nel codice C# usando JSON
iPad
• L’applicazione iPad è la stessa
  applicazione usando iPhone App –
  “Universal”
• La UI sfrutta lo schermo più grande.
• Impostazioni usando:
 IMvxTouchViewPresenter
Windows 8
Windows 8 Binding
Simile a Windows Phone 7….
• Niente C#, solo XAML con {Binding}


• Usa ValueConverters per i Bindings
• Per le leste binding su ItemsSource

• Però: La navigazione si fa tramite codice e
  non tramite Uri Xaml
Sqlite cross-platform
                     Business logic


                       Data layer


                        sqlite-net

 csharp-sqlite   Sqlite x WinRT             Dentro l’OS


Windows Phone       WinRT             iOS            Android
Sqlite cross-platform
• Sqlite per WinRT x86 e x64
• http://www.sqlite.org/download.html

• sqlite-net         https://github.com/praeclarum/sqlite-
  net

• csharp-sqlite          http://code.google.com/p/csharp-
  sqlite/
XAMARIN COUPON

             -15%
https://store.xamarin.com/?discount=wprefresh



     -fino a fine Luglio-
Domande?

Contenu connexe

En vedette

En vedette (6)

Creare una community dal basso ed arrivare ad un'azienda milionaria - Emanue...
Creare una community dal basso ed arrivare ad un'azienda milionaria  - Emanue...Creare una community dal basso ed arrivare ad un'azienda milionaria  - Emanue...
Creare una community dal basso ed arrivare ad un'azienda milionaria - Emanue...
 
Design Pattern Architetturali - Dependency Injection
Design Pattern Architetturali - Dependency InjectionDesign Pattern Architetturali - Dependency Injection
Design Pattern Architetturali - Dependency Injection
 
WPF basics
WPF basicsWPF basics
WPF basics
 
WPF
WPFWPF
WPF
 
WPF MVVM Toolkit
WPF MVVM ToolkitWPF MVVM Toolkit
WPF MVVM Toolkit
 
Model-View-ViewModel
Model-View-ViewModelModel-View-ViewModel
Model-View-ViewModel
 

Similaire à MVVMCross da Windows Phone a Windows 8 passando per Android e iOS

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
Sinergia Totale
 
Sviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarinSviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarin
Fabio Cozzolino
 

Similaire à MVVMCross da Windows Phone a Windows 8 passando per Android e iOS (20)

MVVM Cross <3 Xamarin
MVVM Cross <3 XamarinMVVM Cross <3 Xamarin
MVVM Cross <3 Xamarin
 
Xamarin
XamarinXamarin
Xamarin
 
Android - Programmazione Avanzata
Android -  Programmazione AvanzataAndroid -  Programmazione Avanzata
Android - Programmazione Avanzata
 
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
 
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
 
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
 
GWT Development for Handheld Devices
GWT Development for Handheld DevicesGWT Development for Handheld Devices
GWT Development for Handheld Devices
 
Modi innovativi per costruire App
Modi innovativi per costruire AppModi innovativi per costruire App
Modi innovativi per costruire App
 
SkyMedia: La tecnologia al servizio dell'intrattenimento
SkyMedia: La tecnologia al servizio dell'intrattenimentoSkyMedia: La tecnologia al servizio dell'intrattenimento
SkyMedia: La tecnologia al servizio dell'intrattenimento
 
Meetup ASP.NET Core Angular
Meetup ASP.NET Core AngularMeetup ASP.NET Core Angular
Meetup ASP.NET Core Angular
 
Niccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWTNiccolò Becchi: Introduzione a GWT
Niccolò Becchi: Introduzione a GWT
 
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
 
Designing with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele Mondello
 
XeDotNet - .Net MAUI
XeDotNet - .Net MAUIXeDotNet - .Net MAUI
XeDotNet - .Net MAUI
 
Sviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarinSviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarin
 
Xamarin & Cognitive Services Slides
Xamarin & Cognitive Services SlidesXamarin & Cognitive Services Slides
Xamarin & Cognitive Services Slides
 
Mobile UI Design
Mobile UI DesignMobile UI Design
Mobile UI Design
 
Multi-Device Hybrid Apps con Visual Studio e Apache Cordova
Multi-Device Hybrid Apps con Visual Studio e Apache CordovaMulti-Device Hybrid Apps con Visual Studio e Apache Cordova
Multi-Device Hybrid Apps con Visual Studio e Apache Cordova
 
MVVM senza fronzoli con Caliburn.Micro
MVVM senza fronzoli con Caliburn.MicroMVVM senza fronzoli con Caliburn.Micro
MVVM senza fronzoli con Caliburn.Micro
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformAngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
 

Plus de Dan Ardelean

Plus de Dan Ardelean (20)

CI/CD for mobile development using AppCenter
CI/CD for mobile development using AppCenterCI/CD for mobile development using AppCenter
CI/CD for mobile development using AppCenter
 
CI/CD for mobile development using Visual Studio App Center
CI/CD for mobile development using Visual Studio App CenterCI/CD for mobile development using Visual Studio App Center
CI/CD for mobile development using Visual Studio App Center
 
Visual Studio App Center: CI/CD para mobile devs
Visual Studio App Center: CI/CD para mobile devsVisual Studio App Center: CI/CD para mobile devs
Visual Studio App Center: CI/CD para mobile devs
 
Desarrollo multiplataforma con el framework .net
Desarrollo multiplataforma con el framework .netDesarrollo multiplataforma con el framework .net
Desarrollo multiplataforma con el framework .net
 
Xamarin.forms a different approach to native cross platform mobile development
Xamarin.forms a different approach to native cross platform mobile developmentXamarin.forms a different approach to native cross platform mobile development
Xamarin.forms a different approach to native cross platform mobile development
 
Xamarin.Forms a different approach to cross platform natove mobile development
Xamarin.Forms a different approach to cross platform natove mobile developmentXamarin.Forms a different approach to cross platform natove mobile development
Xamarin.Forms a different approach to cross platform natove mobile development
 
Xamarin - Under the bridge
Xamarin - Under the bridgeXamarin - Under the bridge
Xamarin - Under the bridge
 
Sviluppo x platform con xamarin
Sviluppo x platform con xamarin Sviluppo x platform con xamarin
Sviluppo x platform con xamarin
 
Xamarin - why not ?
Xamarin -  why not ?Xamarin -  why not ?
Xamarin - why not ?
 
Share more code on iOS, Android and Windows with Portable Class Libraries
Share more code on iOS, Android and Windows with Portable Class LibrariesShare more code on iOS, Android and Windows with Portable Class Libraries
Share more code on iOS, Android and Windows with Portable Class Libraries
 
iBeacons for everyone
iBeacons for everyoneiBeacons for everyone
iBeacons for everyone
 
Xamarin Dev Days 2016 introduction to xamarin
Xamarin Dev Days 2016   introduction to xamarinXamarin Dev Days 2016   introduction to xamarin
Xamarin Dev Days 2016 introduction to xamarin
 
A new world of possibilities for contextual awareness with beacons
A new world of possibilities for contextual awareness with beaconsA new world of possibilities for contextual awareness with beacons
A new world of possibilities for contextual awareness with beacons
 
C sharp day 2015 c# patterns- cross-platform
C sharp day 2015   c# patterns- cross-platform  C sharp day 2015   c# patterns- cross-platform
C sharp day 2015 c# patterns- cross-platform
 
Utilizzo dei beacon con windows 10
Utilizzo dei beacon con windows 10Utilizzo dei beacon con windows 10
Utilizzo dei beacon con windows 10
 
Develop for Windows 10 (Preview)
Develop for Windows 10 (Preview)Develop for Windows 10 (Preview)
Develop for Windows 10 (Preview)
 
Community Days 2015 Introduzione a Xamarin
Community Days 2015  Introduzione a XamarinCommunity Days 2015  Introduzione a Xamarin
Community Days 2015 Introduzione a Xamarin
 
Sviluppo di app cross platform con xamarin e C#
Sviluppo di app cross platform con xamarin e C#Sviluppo di app cross platform con xamarin e C#
Sviluppo di app cross platform con xamarin e C#
 
WP04 -Sensori e hardware con Windows Phone 8.1
WP04 -Sensori e hardware con Windows Phone 8.1WP04 -Sensori e hardware con Windows Phone 8.1
WP04 -Sensori e hardware con Windows Phone 8.1
 
Bluetooth LE & Lumia Sensor Core
Bluetooth LE & Lumia Sensor CoreBluetooth LE & Lumia Sensor Core
Bluetooth LE & Lumia Sensor Core
 

MVVMCross da Windows Phone a Windows 8 passando per Android e iOS

  • 1. MVVMCross da Windows Phone a Windows 8 passando per Android e iOS Dan ARDELEAN Twitter: @danardelean Email: dan.ardelean@neologics.eu
  • 2. Smartphones Operating 1Q12 1Q12 Market 1Q11 1Q11 Market System Units Share (%) Units Share (%) Android 81,067.4 56.1 36,350.1 36.4 iOS 33,120.5 22.9 16,883.2 16.9 Symbian 12,466.9 8.6 27,598.5 27.7 Research In 6.9 13.0 Motion 9,939.3 13,004.0 Bada 3,842.2 2.7 1,862.2 1.9 Microsoft 2,712.5 1.9 2,582.1 2.6 Altri 1,242.9 0.9 1,495.0 1.5 Source: Gartner (April 2012) Totale 144,391.7 100.0 99,775.0 100.0 Source: Gartner (Maggio 2012)
  • 3. Tablet OS 2011 2012 2013 2016 iOS 39.998 72.988 99.553 169.652 Android 17.292 37.878 61.684 137.657 Microsoft 0 4.863 14.547 43.648 QNX 807 2.643 6.036 17.836 Altri 1,919 510 637 464 Totale 60.017 118.883 182.457 369.258 Source: Gartner (Aprile 2012)
  • 4. Agenda • C# per sviluppo mobile cross-platform • Introduzione a MVVM e MVVMCross • TwitterSearch • Sqlite cross-platform • Domande
  • 5. C# per sviluppo mobile cross-platform • Usando C# si può sviluppare per: Windows Phone, Windows 8, Android e iOS • Possibilità di sfruttare features come: generics, linq, anonymous methods, async • Possibilità di riutilizzare il codice • Costi per lo sviluppo e la manutenzione del codice sorgenti più contenuti
  • 6. Cosa serve – Windows Phone • Windows 7 • Visual Studio 2010 Express or Ultimate • Account AppHub 99$ • Telefono
  • 7. Cosa serve – Windows 8 • PC con Windows 8 RP • Visual Studio 2012 RC • Fare i lab di Win8
  • 8. Cosa serve – Android • Windows o Mac • MonoDevelop o Visual Studio • Mono for Android 399$ • Play account 25$
  • 9. Cosa serve – iOS • Mac • MonoDevelop e XCode • Mono for iOS 399$ • iOS account 99$ • MacIncloud http://www.macincloud.com
  • 10. MVVM get/set proprietà ViewModel commandi ViewModel ViewModel Model View Qualsiasi codice Model View C#! Model View notifiche messaggi
  • 11. Implementare MVVM • Properties • INotifyPropertyChanged • INotifyCollectionChanged • Data Binding • IValueConverter • ICommand • UI Thread
  • 12. Vantaggi MVVM • Separazione tra BL e UI • Più facile da testare • MVVMCross riutilizzo codice cross- platform
  • 14. MVVMCross Stuart Lodge (https://github.com/slodge/MvvmCross) get/set proprietà ViewModel commandi ViewModel ViewModel Model View Qualsiasi codice Model View C#! Model View notifiche messaggi Codice Codice condiviso Specifico
  • 19. Windows Phone 7 • Niente C#, solo XAML con {Binding} • Binding syntax includes: • {Binding Path, Converter=Converter, ConverterParameter=Parameter, Mode=Mode, FallbackValue=Fallback}
  • 20. Android • Niente C#, solo xml con attributi MvxBind • La sintassi MvxBind è JSON con struttura XAML.
  • 21. Xaml vs MvxBind WP7: Text=‚{Binding SearchText,Mode=TwoWay}‛ Android: local:MvxBind=‚{‘Text’: {‘Path’:’SearchText’,’Mode’:’TwoWay’}}‛
  • 22. Xaml vs MvxBind WP7: Text=‚{Binding Timestamp,Converter={StaticResource TimeAgo}}‛ Android: local:MvxBind=‚{‘Text’: {‘Path’:’Timestamp’,Converter’:’TimeAgo’}}‛
  • 23. iPhone App • UI in XML usando Xcode • XIB collegato alle classe C# usando MonoTouch • Binding nel codice C# usando JSON
  • 24. iPad • L’applicazione iPad è la stessa applicazione usando iPhone App – “Universal” • La UI sfrutta lo schermo più grande. • Impostazioni usando: IMvxTouchViewPresenter
  • 26. Windows 8 Binding Simile a Windows Phone 7…. • Niente C#, solo XAML con {Binding} • Usa ValueConverters per i Bindings • Per le leste binding su ItemsSource • Però: La navigazione si fa tramite codice e non tramite Uri Xaml
  • 27. Sqlite cross-platform Business logic Data layer sqlite-net csharp-sqlite Sqlite x WinRT Dentro l’OS Windows Phone WinRT iOS Android
  • 28. Sqlite cross-platform • Sqlite per WinRT x86 e x64 • http://www.sqlite.org/download.html • sqlite-net https://github.com/praeclarum/sqlite- net • csharp-sqlite http://code.google.com/p/csharp- sqlite/
  • 29. XAMARIN COUPON -15% https://store.xamarin.com/?discount=wprefresh -fino a fine Luglio-