Arquitectura en Aplicaciones Xamarin

of 57 /57
Arquitectura de Apps Xamari Javier Suárez Ruiz

Embed Size (px)

Transcript of Arquitectura en Aplicaciones Xamarin

Page 1: Arquitectura en Aplicaciones Xamarin

Arquitectura de Apps XamarinJavier Suárez Ruiz

Page 2: Arquitectura en Aplicaciones Xamarin

Javier SuárezMicrosoft MVP Windows Platform Development

• Blog: http://geeks.ms/blogs/jsuarez

• Email: [email protected]

• Twitter: @jsuarezruiz

Page 3: Arquitectura en Aplicaciones Xamarin

¿Qué vamos a ver?

1.Arquitectura de proyectos móviles en cada

plataforma.

2.El patron MVVM.

3. Introducción a MVVMCross.

4.Utilizando MVVMCross.

5.Preguntas y Respuestas.

Page 4: Arquitectura en Aplicaciones Xamarin

Comparativa de plataformas móviles. Nativo

IDE

Lenguaje

Vistas

iOS Android Windows Phone

Xcode Android Studio

Visual Studio

ObjectiveC o Swift

Java C#

Storyboard AXML XAML

MVC MVC MVVMPatrón diseño

Page 5: Arquitectura en Aplicaciones Xamarin

Primer proyecto con Xamarin!

Page 6: Arquitectura en Aplicaciones Xamarin

Comparativa de plataformas móviles. Nativo

IDE

Lenguaje

Vistas

iOS Android Windows Phone

Xcode Android Studio

Visual Studio

ObjectiveC o Swift

Java C#

Storyboard AXML XAML

MVC MVC MVVMPatrón diseño

Page 7: Arquitectura en Aplicaciones Xamarin

Comparativa de plataformas móviles. Xamarin

IDE

Lenguaje

Vistas

iOS Android Windows Phone

Visual Studio Visual Studio Visual Studio

C# C# C#

Storyboard AXML XAML

MVC MVC MVVM

Patrón diseño

Page 8: Arquitectura en Aplicaciones Xamarin

Comparativa de plataformas móviles. Xamarin

IDE

Lenguaje

Vistas

iOS Android Windows Phone

Visual Studio Visual Studio Visual Studio

C# C# C#

Storyboard AXML XAML

MVVM MVVM MVVM

Patrón diseño

Page 9: Arquitectura en Aplicaciones Xamarin

Nuestros objetivos. Buenas prácticas

1. Reutilizar código

2. Utilizar MVVM

3. Utilizar inyección de dependencias para resolver servicios y viewmodels

4. Dividir responsabilidades, dividir código

Page 10: Arquitectura en Aplicaciones Xamarin

MVVM

View

View

Mo

del

Mo

del

get/set PropiedadesComandos

Notifica cambios

C#

Models

ViewV

iew

View

Mo

del

View

Mo

del

Mo

del

Mo

del

Cross PlatformEspecífico de la Plataforma

Page 11: Arquitectura en Aplicaciones Xamarin

Pero… ¿Porque MVVM?

Mayor facilidad para mantener, extender y compartir el código.

Más facilidad a la hora de colaborar.

Testing.

Más fácil de diseñar.

Page 12: Arquitectura en Aplicaciones Xamarin

MvvmCross

•Cross Platform MVVM Development Framework•Gratuito, Open Source•Soporta

•WP 7, 8, 8.1•WPF•WinRT•Xamarin.Android•Xamarin.iOS•Xamarin.Mac

•AKA Mvx

Page 13: Arquitectura en Aplicaciones Xamarin

Portable Class Library

•1 Librería

•Multiples Platformas

•Incluyendo:

•Xamarin.Android

•Xamarin.iOS

Page 14: Arquitectura en Aplicaciones Xamarin

Características de una Portable Class Library

•Código compartido centralizado•Se depura igual que si el código

estuviese en un Proyecto específico.

•Compartir Proyecto/Assembly

•NuGet

Page 15: Arquitectura en Aplicaciones Xamarin

MVVMCross & PCL

View

View

Mo

de

l

Mo

del

PropiedadesComandos

Notifica cambios

C#

Model

ViewV

iew

View

Mo

de

lV

iewM

od

el

Mo

de

lM

od

el

Cross Platform -PCLEspecífico dePlataforma

Page 16: Arquitectura en Aplicaciones Xamarin

INotifyPropertyChanged

Page 17: Arquitectura en Aplicaciones Xamarin

Propriedad típica en la ViewModel

Page 18: Arquitectura en Aplicaciones Xamarin

Binding OneWay

PersonViewModel

FirstName

LastName

DateOfBirth

First Name

Jon

Last Name

Doe

Date of birth

12/07/1989

Page 19: Arquitectura en Aplicaciones Xamarin

UI Syntax

Page 20: Arquitectura en Aplicaciones Xamarin

Two Way Binding

PersonViewModel

FirstName

LastName

DateOfBirth

First Name

Jon

Last Name

Doe

Date of birth

12/07/1989

Page 21: Arquitectura en Aplicaciones Xamarin

UI Syntax

Page 22: Arquitectura en Aplicaciones Xamarin

Nuestra primera App multiplataforma con Xamarin y MVVM Cross

Page 23: Arquitectura en Aplicaciones Xamarin

Value Conversion

PersonViewModel

FirstName

LastName

DateOfBirth

First Name

Jon

Last Name

Doe

Age

24

“Age” Conversion

Page 24: Arquitectura en Aplicaciones Xamarin

IMvxValueConverter

Page 25: Arquitectura en Aplicaciones Xamarin

AgeValueConverter

Page 26: Arquitectura en Aplicaciones Xamarin

UI Syntax

Page 27: Arquitectura en Aplicaciones Xamarin

UI Syntax

Page 28: Arquitectura en Aplicaciones Xamarin

Trabajando con Converters

Page 29: Arquitectura en Aplicaciones Xamarin

MyViewModel

Necesita Localización

Necesita SQL

Necesita CalculadoraMy TaxCalculator

Windows Phone Location

Inversión de Control

Windows Phone SQL

El contenedor

Page 30: Arquitectura en Aplicaciones Xamarin

MyViewModel

Necesita Localización

Necesita SQL

Necesita CalculatorMy TaxCalculator

iOS Location

Inversión de Control

iOS SQL

El contenedor

Page 31: Arquitectura en Aplicaciones Xamarin

Mvx.Register<T>

• RegisterSingleton

• Lazy - RegisterSingleton

• RegisterType

Page 32: Arquitectura en Aplicaciones Xamarin

Registro automático

Page 33: Arquitectura en Aplicaciones Xamarin

Mvx.Resolve<T>

• Resolve

• CanResolve

• TryResolve

Page 34: Arquitectura en Aplicaciones Xamarin

Mvx Construction

• Resolución en el constructor

• IoCConstruct

Page 35: Arquitectura en Aplicaciones Xamarin

Nuestro primer servicio y comenzamos a utilizer Ioc

Page 36: Arquitectura en Aplicaciones Xamarin

Acciones (Comandos)

PersonViewModel

FirstName

LastName

DateOfBirth

First Name

Jon

Last Name

Doe

Date of birth

12/07/1989

AddCommand

Page 37: Arquitectura en Aplicaciones Xamarin

ICommand

Page 38: Arquitectura en Aplicaciones Xamarin

Typical ViewModel Command

Page 39: Arquitectura en Aplicaciones Xamarin

UI Syntax

Page 40: Arquitectura en Aplicaciones Xamarin

Llega el turno de realizar

acciones!

Page 41: Arquitectura en Aplicaciones Xamarin

Colecciones

PeopleViewModel

HackersList<PersonViewModel>

Greg

Jon

Daniel

Cool Hackers

Jon@redth

Greg@gshackles

Daniel@dsplaisted

Tomasz

Tomasz@cheesebar

Page 42: Arquitectura en Aplicaciones Xamarin

INotifyCollectionChanged

Page 43: Arquitectura en Aplicaciones Xamarin

ObservableCollection

Page 44: Arquitectura en Aplicaciones Xamarin

ViewModel Collection Property

Page 45: Arquitectura en Aplicaciones Xamarin

UI Syntax

Page 46: Arquitectura en Aplicaciones Xamarin

UI Syntax

Page 47: Arquitectura en Aplicaciones Xamarin

UI Syntax

Page 48: Arquitectura en Aplicaciones Xamarin

UI Syntax

Page 49: Arquitectura en Aplicaciones Xamarin

Seguimos avanzando, trabajando con colecciones de datos y controles listado

Page 50: Arquitectura en Aplicaciones Xamarin

Navegación

Uso de parámetrosShowViewModel<DetailViewModel>(new DetailParameters() { Index = 2 });

public void Init(DetailParameters parameters)

{

// use the parameters here

}

Page 51: Arquitectura en Aplicaciones Xamarin

Go Back

Page 52: Arquitectura en Aplicaciones Xamarin

Navegación entre páginas

Page 53: Arquitectura en Aplicaciones Xamarin

Plugins• Forma rápida y sencilla

de añadir funcionalidad

específica de cada

plataforma.

• Usamos NuGet o

NinjaCoder para

añadirlos.

• Consumimos los plugins

utilizando inyección de

dependencias o Service

Locator.

• Disponibles: Location,

PhoneCall, Email, Sqlite,

etc.

Page 54: Arquitectura en Aplicaciones Xamarin

Añadiendo y utilizando plugins

Page 55: Arquitectura en Aplicaciones Xamarin

Preguntas y respuestas.

P&R¿Dudas?

Page 56: Arquitectura en Aplicaciones Xamarin

Javier SuárezMicrosoft MVP Windows Platform Development

• Blog: http://geeks.ms/blogs/jsuarez

• Email: [email protected]

• Twitter: @jsuarezruiz

GRACIAS

Page 57: Arquitectura en Aplicaciones Xamarin

Ven a conocer nuestras oficinas:Avenida de Manoteras 38 – Oficina C31128050 Madrid

Con Bravent tendrás proyectos cercanos. Conseguirás triunfos globales

Contacta con nosotros:

Llámanos:91 240 4785

Envíanos un e-mail:[email protected]@bravent.net

Visita nuestra web:www.bravent.net

Síguenos en twitter:@bravent