Upload
javier-suarez-ruiz
View
886
Download
2
Embed Size (px)
Citation preview
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.
COMPARTIR AL MÁXIMOAVANTE
.
.
Javier SuárezMicrosoft MVP Windows Platform Development
• Blog: http://geeks.ms/blogs/jsuarez• Email: [email protected]• Twitter: @jsuarezruiz
COMPARTIR AL MÁXIMOAVANTE
.
.
EL PROBLEMA
Creas la misma Appvarias veces
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
COMPARTIR AL MÁXIMOAVANTE
.
.¿Qué podemos compartir con este planteamiento?
COMPARTIR AL MÁXIMOAVANTE
.
.
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
COMPARTIR AL MÁXIMOAVANTE
.
.
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
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
COMPARTIR AL MÁXIMOAVANTE
.
.¿Y todo esto con una App “real”?
COMPARTIR AL MÁXIMOAVANTE
.
.
COMPARTIR AL MÁXIMOAVANTE
.
.Utilizando Xamarin Classic
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
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
COMPARTIR AL MÁXIMOAVANTE
.
.
PORTABLE CLASS LIBRARY
•1 Librería•Multiples Platformas•Incluyendo:• Xamarin.Android• Xamarin.iOS
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
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
COMPARTIR AL MÁXIMOAVANTE
.
.
DEMONuestra App utilizando MVVMCross
COMPARTIR AL MÁXIMOAVANTE
.
.Utilizando Xamarin.Forms
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
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
COMPARTIR AL MÁXIMOAVANTE
.
.
DEMOAhora utilizando Xamarin.Forms
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#
COMPARTIR AL MÁXIMOAVANTE
.
.
UTILIZANDO XAMARIN CLASSIC
Web Services
Web Services Backend C#
App
Services
Services Services Services
Model
View Model
View View View
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
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.
COMPARTIR AL MÁXIMOAVANTE
.
.
¿PREGUNTAS y RESPUESTAS?Dudas?
P&R
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
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.