mvvmcross da windows phone a windows 8 passando per android e ios

30
MVVMCross da Windows Phone a Windows 8 passando per Android e iOS Dan ARDELEAN Twitter: @danardelean Email: [email protected]

Upload: dan-ardelean

Post on 09-May-2015

1.374 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: MVVMCross da Windows Phone a Windows 8 passando per Android e iOS

MVVMCrossda Windows Phone a

Windows 8 passando per Android e iOS

Dan ARDELEANTwitter: @danardeleanEmail: [email protected]

Page 2: MVVMCross da Windows Phone a Windows 8 passando per Android e iOS

Smartphones

Source: Gartner (April 2012)

Operating System

1Q12 Units

1Q12 Market

Share (%)

1Q11 Units

1Q11 Market

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 Motion 9,939.3

6.913,004.0

13.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

Totale 144,391.7 100.0 99,775.0 100.0Source: Gartner (Maggio 2012)

Page 3: MVVMCross da Windows Phone a Windows 8 passando per Android e iOS

Tablet

Source: Gartner (Aprile 2012)

OS 2011 2012 2013 2016iOS 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

Page 4: MVVMCross da Windows Phone a Windows 8 passando per Android e iOS

Agenda

• C# per sviluppo mobile cross-platform

• Introduzione a MVVM e MVVMCross

• TwitterSearch

• Sqlite cross-platform

• Domande

Page 5: MVVMCross da Windows Phone a Windows 8 passando per Android e iOS

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

Page 6: MVVMCross da Windows Phone a Windows 8 passando per Android e iOS

Cosa serve – Windows Phone

• Windows 7

• Visual Studio 2010 Express or Ultimate

• Account AppHub 99$

• Telefono

Page 7: MVVMCross da Windows Phone a Windows 8 passando per Android e iOS

Cosa serve – Windows 8

• PC con Windows 8 RP

• Visual Studio 2012 RC

• Fare i lab di Win8

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

Cosa serve – Android• Windows o Mac

• MonoDevelop o Visual Studio

• Mono for Android 399$

• Play account 25$

Page 9: MVVMCross da Windows Phone a Windows 8 passando per Android e iOS

Cosa serve – iOS• Mac

• MonoDevelop e XCode

• Mono for iOS 399$

• iOS account 99$

• MacIncloud http://www.macincloud.com

Page 10: MVVMCross da Windows Phone a Windows 8 passando per Android e iOS

MVVM

Vie

w

Vie

wM

odel

Model

get/set proprietàcommandi

notifichemessaggi

Qualsiasi codice C#!

Vie

wV

iew

Vie

wM

odel

Vie

wM

odel

Model

Model

Page 11: MVVMCross da Windows Phone a Windows 8 passando per Android e iOS

Implementare MVVM

• Properties• INotifyPropertyChanged• INotifyCollectionChanged• Data Binding• IValueConverter• ICommand• UI Thread

Page 12: MVVMCross da Windows Phone a Windows 8 passando per Android e iOS

Vantaggi MVVM

• Separazione tra BL e UI

• Più facile da testare

• MVVMCross riutilizzo codice cross-platform

Page 13: MVVMCross da Windows Phone a Windows 8 passando per Android e iOS

MVVMCross

Page 14: MVVMCross da Windows Phone a Windows 8 passando per Android e iOS

MVVMCross

Vie

w

Vie

wM

odel

Model

Codice condivisoCodice

Specifico

get/set proprietàcommandi

notifichemessaggi

Qualsiasi codice C#!

Vie

wV

iew

Vie

wM

odel

Vie

wM

odel

Model

Model

Stuart Lodge (https://github.com/slodge/MvvmCross)

Page 15: MVVMCross da Windows Phone a Windows 8 passando per Android e iOS

TwitterSearch

Page 16: MVVMCross da Windows Phone a Windows 8 passando per Android e iOS

Model & Service

Page 17: MVVMCross da Windows Phone a Windows 8 passando per Android e iOS

HomeViewModel

Page 18: MVVMCross da Windows Phone a Windows 8 passando per Android e iOS

TwitterViewModel

Page 19: MVVMCross da Windows Phone a Windows 8 passando per Android e iOS

Windows Phone 7

• Niente C#, solo XAML con {Binding}• Binding syntax includes:• {Binding Path, Converter=Converter,

ConverterParameter=Parameter, Mode=Mode, FallbackValue=Fallback}

Page 20: MVVMCross da Windows Phone a Windows 8 passando per Android e iOS

Android

• Niente C#, solo xml con attributi MvxBind

• La sintassi MvxBind è JSON con struttura XAML.

Page 21: MVVMCross da Windows Phone a Windows 8 passando per Android e iOS

Xaml vs MvxBind

WP7:

Text=“{Binding SearchText,Mode=TwoWay}”

Android:

local:MvxBind=“{‘Text’:{‘Path’:’SearchText’,’Mode’:’TwoWay’}

}”

Page 22: MVVMCross da Windows Phone a Windows 8 passando per Android e iOS

Xaml vs MvxBindWP7:

Text=“{Binding Timestamp,Converter={StaticResource

TimeAgo}}”

Android:

local:MvxBind=“{‘Text’:{‘Path’:’Timestamp’,Converter’:’TimeAgo’}}”

Page 23: MVVMCross da Windows Phone a Windows 8 passando per Android e iOS

iPhone App• UI in XML usando Xcode• XIB collegato alle classe C# usando

MonoTouch• Binding nel codice C# usando JSON

Page 24: MVVMCross da Windows Phone a Windows 8 passando per Android e iOS

iPad• L’applicazione iPad è la stessa

applicazione usando iPhone App – “Universal”

• La UI sfrutta lo schermo più grande.• Impostazioni usando: IMvxTouchViewPresenter

Page 25: MVVMCross da Windows Phone a Windows 8 passando per Android e iOS

Windows 8

Page 26: MVVMCross da Windows Phone a Windows 8 passando per Android e iOS

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

Page 27: MVVMCross da Windows Phone a Windows 8 passando per Android e iOS

Sqlite cross-platform

Windows Phone WinRT iOS Android

csharp-sqlite Sqlite x WinRT Dentro l’OS

sqlite-net

Data layer

Business logic

Page 28: MVVMCross da Windows Phone a Windows 8 passando per Android e iOS

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/

Page 29: MVVMCross da Windows Phone a Windows 8 passando per Android e iOS

XAMARIN COUPON

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

-fino a fine Luglio-

Page 30: MVVMCross da Windows Phone a Windows 8 passando per Android e iOS

Domande?