30
CREANDO APPS COMPARTIENDO AL MÁXIMO Estructura, trucos y otros aspectos de interes con el objetivo de compartir la mayor cantidad de código possible entre plataformas.

Crear Apps móviles multiplataforma con Xamarin compartiendo la mayor cantidad de código

Embed Size (px)

Citation preview

Page 1: Crear Apps móviles multiplataforma con Xamarin compartiendo la mayor cantidad de código

CREANDO APPS COMPARTIENDO

AL MÁXIMOEstructura, trucos y otros aspectos de interes con el objetivo de compartir la

mayor cantidad de código possible entre plataformas.

Page 2: Crear Apps móviles multiplataforma con Xamarin compartiendo la mayor cantidad de código

COMPARTIR AL MÁXIMOAVANTE

.

.

Javier SuárezMicrosoft MVP Windows Platform Development

• Blog: http://geeks.ms/blogs/jsuarez• Email: [email protected]• Twitter: @jsuarezruiz

Page 3: Crear Apps móviles multiplataforma con Xamarin compartiendo la mayor cantidad de código

COMPARTIR AL MÁXIMOAVANTE

.

.

EL PROBLEMA

Creas la misma Appvarias veces

Page 4: Crear Apps móviles multiplataforma con Xamarin compartiendo la mayor cantidad de código

COMPARTIR AL MÁXIMOAVANTE

.

.

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 XAMLMVC MVC MVVMPatrón diseño

Page 5: Crear Apps móviles multiplataforma con Xamarin compartiendo la mayor cantidad de código

COMPARTIR AL MÁXIMOAVANTE

.

.¿Qué podemos compartir con este planteamiento?

Page 6: Crear Apps móviles multiplataforma con Xamarin compartiendo la mayor cantidad de código

COMPARTIR AL MÁXIMOAVANTE

.

.

Page 7: Crear Apps móviles multiplataforma con Xamarin compartiendo la mayor cantidad de código

COMPARTIR AL MÁXIMOAVANTE

.

.

El enfoque de Xamarin

Con Xamarin.Forms:

Se comparte más, controles

compartidos

El enfoque tradicional de Xamarin

Shared UI Code

Page 8: Crear Apps móviles multiplataforma con Xamarin compartiendo la mayor cantidad de código

COMPARTIR AL MÁXIMOAVANTE

.

.

Page 9: Crear Apps móviles multiplataforma con Xamarin compartiendo la mayor cantidad de código

COMPARTIR AL MÁXIMOAVANTE

.

.

TÉCNICAS DE REUTILIZACIÓN DE CÓDIGO

• Copiar y pegar.• Mismo código

duplicado.• Difícil de mantener.• Evitar en lo posible.

Ctrl-C, Ctrl-V

• Modelo• VistaModelo• Vista

MVVM

• Enlaces simbólicos.

• Depende del lenguaje.

Enlazado de ficheros

• Permite mantener código específico de cada plataforma.

• Por contra, multiplica las ramas a mantener.

Compilación Condicional

• Código manejado común a las plataformas.

Portable Class Library

Page 10: Crear Apps móviles multiplataforma con Xamarin compartiendo la mayor cantidad de código

COMPARTIR AL MÁXIMOAVANTE

.

.

MVVM EN APLICACIONES UNIVERSALES

Vista VistaModelo

Modelo

Modelo

MainView.Xaml

MainViewModel.cs

Data Binding

Comandos

Interfaz de Usuario Lógica de Negocio

Lógica de Negocio

Lógica de Presentación

Page 11: Crear Apps móviles multiplataforma con Xamarin compartiendo la mayor cantidad de código

COMPARTIR AL MÁXIMOAVANTE

.

.¿Y todo esto con una App “real”?

Page 12: Crear Apps móviles multiplataforma con Xamarin compartiendo la mayor cantidad de código

COMPARTIR AL MÁXIMOAVANTE

.

.

Page 13: Crear Apps móviles multiplataforma con Xamarin compartiendo la mayor cantidad de código

COMPARTIR AL MÁXIMOAVANTE

.

.Utilizando Xamarin Classic

Page 14: Crear Apps móviles multiplataforma con Xamarin compartiendo la mayor cantidad de código

COMPARTIR AL MÁXIMOAVANTE

.

.

COMPARATIVA DE PLATAFORMAS MÓVILES XAMARIN

IDE

Lenguaje

Vistas

iOS Android Windows Phone

Visual Studio Visual Studio Visual Studio

C# C# C#

Storyboard AXML XAMLMVVM MVVM MVVMPatrón diseño

Page 15: Crear Apps móviles multiplataforma con Xamarin compartiendo la mayor cantidad de código

COMPARTIR AL MÁXIMOAVANTE

.

.

MVVM

View

ViewM

odel

Model

get/set PropiedadesComandos

Notifica cambios

C#

Models

ViewView

ViewM

odelView

Model

ModelM

odel

Cross PlatformEspecífico de la Plataforma

Page 16: Crear Apps móviles multiplataforma con Xamarin compartiendo la mayor cantidad de código

COMPARTIR AL MÁXIMOAVANTE

.

.

PORTABLE CLASS LIBRARY

•1 Librería•Multiples Platformas•Incluyendo:• Xamarin.Android• Xamarin.iOS

Page 17: Crear Apps móviles multiplataforma con Xamarin compartiendo la mayor cantidad de código

COMPARTIR AL MÁXIMOAVANTE

.

.

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 18: Crear Apps móviles multiplataforma con Xamarin compartiendo la mayor cantidad de código

COMPARTIR AL MÁXIMOAVANTE

.

.

MVVMCross & PCL

View

ViewM

odel

Model

PropiedadesComandos

Notifica cambios

C#

Model

ViewView

ViewM

odelView

Model

ModelM

odel

Cross Platform -PCLEspecífico de Plataforma

Page 19: Crear Apps móviles multiplataforma con Xamarin compartiendo la mayor cantidad de código

COMPARTIR AL MÁXIMOAVANTE

.

.

DEMONuestra App utilizando MVVMCross

Page 20: Crear Apps móviles multiplataforma con Xamarin compartiendo la mayor cantidad de código

COMPARTIR AL MÁXIMOAVANTE

.

.Utilizando Xamarin.Forms

Page 21: Crear Apps móviles multiplataforma con Xamarin compartiendo la mayor cantidad de código

COMPARTIR AL MÁXIMOAVANTE

.

.

COMPARATIVA DE PLATAFORMAS MÓVILES XAMARIN

IDE

Lenguaje

Vistas

iOS Android Windows Phone

Visual Studio Visual Studio Visual Studio

C# C# C#

XAML XAML XAMLMVVM MVVM MVVMPatrón diseño

Page 22: Crear Apps móviles multiplataforma con Xamarin compartiendo la mayor cantidad de código

COMPARTIR AL MÁXIMOAVANTE

.

.

ARQUITECTURA DE APPS CON XAMARIN.FORMS

View

ViewM

odel

Model

PropiedadesComandos

Notifica cambios

C#

Model

ViewView

ViewM

odelView

Model

ModelM

odel

Cross Platform –PCL o Shared

Page 23: Crear Apps móviles multiplataforma con Xamarin compartiendo la mayor cantidad de código

COMPARTIR AL MÁXIMOAVANTE

.

.

DEMOAhora utilizando Xamarin.Forms

Page 24: Crear Apps móviles multiplataforma con Xamarin compartiendo la mayor cantidad de código

COMPARTIR AL MÁXIMOAVANTE

.

.

UTILIZANDO NATIVO

Web Services

Web Services Backend C#

App

Services Services Services

View View View

ViewModel Controller Controller

App App

Web Services Backend C# Web Services Backend C#

Page 25: Crear Apps móviles multiplataforma con Xamarin compartiendo la mayor cantidad de código

COMPARTIR AL MÁXIMOAVANTE

.

.

UTILIZANDO XAMARIN CLASSIC

Web Services

Web Services Backend C#

App

Services

Services Services Services

Model

View Model

View View View

Page 26: Crear Apps móviles multiplataforma con Xamarin compartiendo la mayor cantidad de código

COMPARTIR AL MÁXIMOAVANTE

.

.

UTILIZANDO XAMARIN.FORMS

Web Services

Web Services Backend C#

App

Services

Services (Implementation) Services (Implementation) Services (Implementation)

Model

View Model

View (Custom Render) View (Custom Render) View (Custom Render)

View

Page 27: Crear Apps móviles multiplataforma con Xamarin compartiendo la mayor cantidad de código

COMPARTIR AL MÁXIMOAVANTE

.

.

CONCLUSIONES RÁPIDAS

1. Siendo ordenado y siguiendo una serie de patrones podemos compartir entre el 65% y el 95% del código de una App móvil multiplataforma.

2. Xamarin.Forms no es siempre la solución más ideal dependiendo de las características del Proyecto.

Page 28: Crear Apps móviles multiplataforma con Xamarin compartiendo la mayor cantidad de código

COMPARTIR AL MÁXIMOAVANTE

.

.

¿PREGUNTAS y RESPUESTAS?Dudas?

P&R

Page 29: Crear Apps móviles multiplataforma con Xamarin compartiendo la mayor cantidad de código

COMPARTIR AL MÁXIMOAVANTE

.

.

GRACIAS a TODOSPor vuestro tiempo!

Javier SuárezMicrosoft MVP Windows Platform Development

• Blog: http://geeks.ms/blogs/jsuarez• Email: [email protected]• Twitter: @jsuarezruiz

Page 30: Crear Apps móviles multiplataforma con Xamarin compartiendo la mayor cantidad de código

COMPARTIR AL MÁXIMOAVANTE

.

.

CREANDO APPS COMPARTIENDO AL MÁXIMOEstructura, trucos y otros aspectos de interes con el objetivo de compartir la mayor cantidad de código possible entre plataformas.