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

Post on 09-May-2015

1,375 views 4 download

transcript

MVVMCrossda Windows Phone a

Windows 8 passando per Android e iOS

Dan ARDELEANTwitter: @danardeleanEmail: dan.ardelean@neologics.eu

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)

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

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

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

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

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)

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 MvxBindWP7:

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

Windows Phone WinRT iOS Android

csharp-sqlite Sqlite x WinRT Dentro l’OS

sqlite-net

Data layer

Business logic

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?