SlideShare a Scribd company logo
1 of 61
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.
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
Javier Suárez
XAML Team Lead Bravent
Microsoft MVP Windows Platform
Development
• Blog: http://geeks.ms/blogs/jsuarez
• Email: javiersuarezruiz@hotmail.com
• Twitter: @jsuarezruiz
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
EL PROBLEMA
Creas la misma App
varias veces
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
EL ENFOQUE “ESCRIBE UNA
VEZ” PARA TODO
Mínimo Denominador
Común
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
EL ENFOQUE DE XAMARIN
Nativo compartiendo
código
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
DEMO
Primera App Xamarin
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
COMPARATIVA DE PLATAFORMAS MÓVILES NATIVOS
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
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
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 MVVMPatrón diseño
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
MVVM
View
ViewModel
Model
get/set
Propiedades
Comandos
Notifica cambios
C#
Models
View
View
ViewModel
ViewModel
Model
Model
Cross Platform
Específico de
la Plataforma
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
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.
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
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
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
PORTABLE CLASS LIBRARY
•1 Librería
•Multiples Platformas
•Incluyendo:
•Xamarin.Android
•Xamarin.iOS
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
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ÁXIMO
MOBILE DEV DAY
.
.
MVVMCross & PCL
View
ViewModel
Model
Propiedades
Comandos
Notifica
cambios
C#
Model
View
View
ViewModel
ViewModel
Model
Model
Cross Platform -PCL
Específico de
Plataforma
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
Binding OneWay
PersonViewModel
FirstName
LastName
DateOfBirth
First Name
Jon
Last Name
Doe
Date of birth
12/07/1989
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
UI Syntax
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
Two Way Binding
PersonViewModel
FirstName
LastName
DateOfBirth
First Name
Jon
Last Name
Doe
Date of birth
12/07/1989
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
UI Syntax
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
Value Conversion
PersonViewModel
FirstName
LastName
DateOfBirth
First Name
Jon
Last Name
Doe
Age
24
“Age” Conversion
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
IMvxValueConverter
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
AgeValueConverter
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
UI Syntax
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
UI Syntax
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
Acciones (Comandos)
PersonViewModel
FirstName
LastName
DateOfBirth
First Name
Jon
Last Name
Doe
Date of birth
12/07/1989
AddCommand
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
ICommand
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
ViewModel Command
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
UI Syntax
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
DEMO
Utilizando MVVMCross
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
Xamarin + Xamarin.Forms
Con Xamarin.Forms:
Se comparte más, controles compartidos
El enfoque tradicional de Xamarin
Shared UI Code
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
Xamarin + Xamarin.Forms
• Permite crear facilmente y con
rapidez interfaces de usuario
nativas compartidas
• Los elementos de
Xamarin.Forms son mapeados
a elementos nativos y
behaviors propios de cada
plataforma
• Podemos mezclar
Xamarin.Forms con APIs
nativas
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
Plataformas soportadas por Xamarin.Forms
Soporta:
• Android 4.0+
• iOS 6.1+
• Windows Phone 8.0
(Silverlight) &
Windows Phone 8.1
(WinRT)
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
Que incluye
 40+ tipos de páginas, Layouts, y
controles
 Se puede utilizer code behind o
XAML
 Two-way Data Binding
 Navegación
 API de animaciones
 Servicio de dependencias
 Messaging Center
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
Páginas
Content MasterDetail Navigation Tabbed Carousel
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
Layouts
Stack Absolute Relative Grid ContentVie
w
ScrollView Frame
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
Controles
ActivityIndicato
r
BoxView Button DatePicker Editor
Entry Image Label ListView Map
OpenGLView Picker ProgressBar SearchBar Slider
Stepper TableView TimePicker WebView EntryCell
ImageCell SwitchCell TextCell ViewCell
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
Arquitectura de Apps con Xamarin.Forms
View
ViewModel
Model
Propiedades
Comandos
Notifica
cambios
C#
Model
View
View
ViewModel
ViewModel
Model
Model
Cross Platform –PCL o Shared
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
COMPARATIVA DE PLATAFORMAS MÓVILES NATIV
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
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
DEMO
Xamarin.Forms utilizando MVVM
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
¿Qué podemos compartir
con este planteamiento?
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
El enfoque de Xamarin
Con Xamarin.Forms:
Se comparte más, controles compartidos
El enfoque tradicional de Xamarin
Shared UI Code
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
TÉCNICAS DE REUTILIZACIÓN
DE CÓDIGO
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
MVVM EN APLICACIONES
UNIVERSALES
Data Binding
Comandos
Interfaz de Usuario Lógica de Negocio
Lógica de Negocio
Lógica de
Presentación
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
¿Y todo esto con
una App “real”?
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
Utilizando Xamarin Classic
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
COMPARATIVA DE PLATAFORMAS MÓVILES XAMA
IDE
Lenguaje
Vistas
iOS Android Windows
Phone
Visual Studio Visual Studio Visual Studio
C# C# C#
Storyboard AXML XAML
MVVM MVVM MVVMPatrón diseño
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
MVVM
View
ViewModel
Model
get/set
Propiedades
Comandos
Notifica cambios
C#
Models
View
View
ViewModel
ViewModel
Model
Model
Cross Platform
Específico de
la Plataforma
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
DEMO
Nuestra App utilizando MVVMCross
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
Utilizando Xamarin.Forms
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
COMPARATIVA DE PLATAFORMAS MÓVILES
IDE
Lenguaje
Vistas
iOS Android Windows
Phone
Visual Studio Visual Studio Visual Studio
C# C# C#
XAML XAML XAML
MVVM MVVM MVVMPatrón diseño
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
ARQUITECTURA DE APPS CON
XAMARIN.FORMS
View
ViewModel
Model
Propiedades
Comandos
Notifica
cambios
C#
Model
View
View
ViewModel
ViewModel
Model
Model
Cross Platform –PCL o Shared
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
DEMO
Ahora utilizando Xamarin.Forms
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
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ÁXIMO
MOBILE DEV DAY
.
.
UTILIZANDO XAMARIN CLASSIC
Web Services
Web Services Backend C#
App
Services
Services Services Services
Model
View Model
View View View
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
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ÁXIMO
MOBILE DEV DAY
.
.
CONCLUSIONES RÁPIDAS
1. Siendo ordenado y siguiendo una serie
de patrones podemos compartir entre el
65% y el 90% 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ÁXIMO
MOBILE DEV DAY
.
.
¿PREGUNTAS y RESPUESTAS?
Dudas?
P&R
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
GRACIAS a TODOS
Por vuestro tiempo!
Javier Suárez
Microsoft MVP Windows Platform Development
• Blog: http://geeks.ms/blogs/jsuarez
• Email: javiersuarezruiz@hotmail.com
• Twitter: @jsuarezruiz
COMPARTIR AL MÁXIMO
MOBILE DEV DAY
.
.
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.

More Related Content

What's hot

Integración Continua con Apps Xamarin
Integración Continua con Apps XamarinIntegración Continua con Apps Xamarin
Integración Continua con Apps XamarinJavier Suárez Ruiz
 
Xamarin Dev Days Málaga 2017 - Apps conectadas con Azure
Xamarin Dev Days Málaga 2017 - Apps conectadas con AzureXamarin Dev Days Málaga 2017 - Apps conectadas con Azure
Xamarin Dev Days Málaga 2017 - Apps conectadas con AzureJavier Suárez Ruiz
 
Arquitectura xamarin - Nuestra primera app
Arquitectura xamarin - Nuestra primera appArquitectura xamarin - Nuestra primera app
Arquitectura xamarin - Nuestra primera appBorja García Cueto
 
re-Connect Madrid: Novedades Xamarin
re-Connect Madrid: Novedades Xamarinre-Connect Madrid: Novedades Xamarin
re-Connect Madrid: Novedades XamarinJavier Suárez Ruiz
 
Extendiendo Xamarin.Forms con Custom Renders
Extendiendo Xamarin.Forms con Custom RendersExtendiendo Xamarin.Forms con Custom Renders
Extendiendo Xamarin.Forms con Custom RendersJavier Suárez Ruiz
 
Xamarin Dev Days - Introducción a Xamarin
Xamarin Dev Days - Introducción a XamarinXamarin Dev Days - Introducción a Xamarin
Xamarin Dev Days - Introducción a XamarinJavier Suárez Ruiz
 
Visual Studio 2017 Launch Event Sevilla
Visual Studio 2017 Launch Event SevillaVisual Studio 2017 Launch Event Sevilla
Visual Studio 2017 Launch Event SevillaJavier Suárez Ruiz
 
Universal Windows Platform Bridges
Universal Windows Platform BridgesUniversal Windows Platform Bridges
Universal Windows Platform BridgesJavier Suárez Ruiz
 
PUE DAY 2017: Introducción a Xamarin
PUE DAY 2017: Introducción a XamarinPUE DAY 2017: Introducción a Xamarin
PUE DAY 2017: Introducción a XamarinJavier Suárez Ruiz
 
Xamarin Dev Days Madrid - Taller Xamarin
Xamarin Dev Days Madrid - Taller XamarinXamarin Dev Days Madrid - Taller Xamarin
Xamarin Dev Days Madrid - Taller XamarinJavier Suárez Ruiz
 
Introducción al desarrollo de apps móviles multiplataforma con Xamarin.Forms
Introducción al desarrollo de apps móviles multiplataforma con Xamarin.FormsIntroducción al desarrollo de apps móviles multiplataforma con Xamarin.Forms
Introducción al desarrollo de apps móviles multiplataforma con Xamarin.FormsJavier Suárez Ruiz
 
WinObjC: Windows Bridge para iOS
WinObjC: Windows Bridge para iOSWinObjC: Windows Bridge para iOS
WinObjC: Windows Bridge para iOSJavier Suárez Ruiz
 
Plain Concepts Tech Day: Desarrollo de aplicaciones multiplataforma con Xamarin
Plain Concepts Tech Day:  Desarrollo de aplicaciones multiplataforma con XamarinPlain Concepts Tech Day:  Desarrollo de aplicaciones multiplataforma con Xamarin
Plain Concepts Tech Day: Desarrollo de aplicaciones multiplataforma con XamarinJavier Suárez Ruiz
 
Interfaces nativas Cross-Platform con Xamarin.Forms
Interfaces nativas Cross-Platform con Xamarin.FormsInterfaces nativas Cross-Platform con Xamarin.Forms
Interfaces nativas Cross-Platform con Xamarin.FormsJavier Suárez Ruiz
 

What's hot (20)

Integración Continua con Apps Xamarin
Integración Continua con Apps XamarinIntegración Continua con Apps Xamarin
Integración Continua con Apps Xamarin
 
Xamarin Dev Days Málaga 2017 - Apps conectadas con Azure
Xamarin Dev Days Málaga 2017 - Apps conectadas con AzureXamarin Dev Days Málaga 2017 - Apps conectadas con Azure
Xamarin Dev Days Málaga 2017 - Apps conectadas con Azure
 
Arquitectura xamarin - Nuestra primera app
Arquitectura xamarin - Nuestra primera appArquitectura xamarin - Nuestra primera app
Arquitectura xamarin - Nuestra primera app
 
re-Connect Madrid: Novedades Xamarin
re-Connect Madrid: Novedades Xamarinre-Connect Madrid: Novedades Xamarin
re-Connect Madrid: Novedades Xamarin
 
Extendiendo Xamarin.Forms con Custom Renders
Extendiendo Xamarin.Forms con Custom RendersExtendiendo Xamarin.Forms con Custom Renders
Extendiendo Xamarin.Forms con Custom Renders
 
Reconnect(); Sevilla - Keynote
Reconnect(); Sevilla - KeynoteReconnect(); Sevilla - Keynote
Reconnect(); Sevilla - Keynote
 
Desktop App Converter
Desktop App ConverterDesktop App Converter
Desktop App Converter
 
Xamarin Dev Days - Introducción a Xamarin
Xamarin Dev Days - Introducción a XamarinXamarin Dev Days - Introducción a Xamarin
Xamarin Dev Days - Introducción a Xamarin
 
Introducción a Xamarin.Forms
Introducción a Xamarin.FormsIntroducción a Xamarin.Forms
Introducción a Xamarin.Forms
 
Testing de Apps Xamarin
Testing de Apps XamarinTesting de Apps Xamarin
Testing de Apps Xamarin
 
Visual Studio 2017 Launch Event Sevilla
Visual Studio 2017 Launch Event SevillaVisual Studio 2017 Launch Event Sevilla
Visual Studio 2017 Launch Event Sevilla
 
Universal Windows Platform Bridges
Universal Windows Platform BridgesUniversal Windows Platform Bridges
Universal Windows Platform Bridges
 
PUE DAY 2017: Introducción a Xamarin
PUE DAY 2017: Introducción a XamarinPUE DAY 2017: Introducción a Xamarin
PUE DAY 2017: Introducción a Xamarin
 
Introduction to xamarin
Introduction to xamarinIntroduction to xamarin
Introduction to xamarin
 
Xamarin Dev Days Madrid - Taller Xamarin
Xamarin Dev Days Madrid - Taller XamarinXamarin Dev Days Madrid - Taller Xamarin
Xamarin Dev Days Madrid - Taller Xamarin
 
Introducción al desarrollo de apps móviles multiplataforma con Xamarin.Forms
Introducción al desarrollo de apps móviles multiplataforma con Xamarin.FormsIntroducción al desarrollo de apps móviles multiplataforma con Xamarin.Forms
Introducción al desarrollo de apps móviles multiplataforma con Xamarin.Forms
 
WinObjC: Windows Bridge para iOS
WinObjC: Windows Bridge para iOSWinObjC: Windows Bridge para iOS
WinObjC: Windows Bridge para iOS
 
Xamarin for Everyone
Xamarin for EveryoneXamarin for Everyone
Xamarin for Everyone
 
Plain Concepts Tech Day: Desarrollo de aplicaciones multiplataforma con Xamarin
Plain Concepts Tech Day:  Desarrollo de aplicaciones multiplataforma con XamarinPlain Concepts Tech Day:  Desarrollo de aplicaciones multiplataforma con Xamarin
Plain Concepts Tech Day: Desarrollo de aplicaciones multiplataforma con Xamarin
 
Interfaces nativas Cross-Platform con Xamarin.Forms
Interfaces nativas Cross-Platform con Xamarin.FormsInterfaces nativas Cross-Platform con Xamarin.Forms
Interfaces nativas Cross-Platform con Xamarin.Forms
 

Viewers also liked

Reconnect(); Sevilla - Introducción a Xamarin 4
Reconnect(); Sevilla - Introducción a Xamarin 4Reconnect(); Sevilla - Introducción a Xamarin 4
Reconnect(); Sevilla - Introducción a Xamarin 4Javier Suárez Ruiz
 
Windows 10: One SDK to rule them all
Windows 10: One SDK to rule them allWindows 10: One SDK to rule them all
Windows 10: One SDK to rule them allJavier Suárez Ruiz
 
[Evento WPSUG] Universal Windows Platform Bridges
[Evento WPSUG] Universal Windows Platform Bridges[Evento WPSUG] Universal Windows Platform Bridges
[Evento WPSUG] Universal Windows Platform BridgesJavier Suárez Ruiz
 
Talks4Kids 2015 - Consejos Heisenberg para conseguir Apps Windows 10 con 99% ...
Talks4Kids 2015 - Consejos Heisenberg para conseguir Apps Windows 10 con 99% ...Talks4Kids 2015 - Consejos Heisenberg para conseguir Apps Windows 10 con 99% ...
Talks4Kids 2015 - Consejos Heisenberg para conseguir Apps Windows 10 con 99% ...Javier Suárez Ruiz
 
Windows 10 Developer Readiness. Interfaces Adaptativas
Windows 10 Developer Readiness. Interfaces AdaptativasWindows 10 Developer Readiness. Interfaces Adaptativas
Windows 10 Developer Readiness. Interfaces AdaptativasJavier Suárez Ruiz
 
Windows 10: Hel10 World! - Novedades XAML
Windows 10: Hel10 World! - Novedades XAMLWindows 10: Hel10 World! - Novedades XAML
Windows 10: Hel10 World! - Novedades XAMLJavier Suárez Ruiz
 
Novedades en Visual Studio Online
Novedades en Visual Studio OnlineNovedades en Visual Studio Online
Novedades en Visual Studio OnlineJavier Suárez Ruiz
 
Introducción al desarrollo de Apps en Windows 10
Introducción al desarrollo de Apps en  Windows 10Introducción al desarrollo de Apps en  Windows 10
Introducción al desarrollo de Apps en Windows 10Javier Suárez Ruiz
 
Reconnect(); Sevilla - Universal Windows Platform
Reconnect(); Sevilla - Universal Windows PlatformReconnect(); Sevilla - Universal Windows Platform
Reconnect(); Sevilla - Universal Windows PlatformJavier Suárez Ruiz
 
Regreso al futuro, la proposición indecente de Microsoft
Regreso al futuro, la proposición indecente de MicrosoftRegreso al futuro, la proposición indecente de Microsoft
Regreso al futuro, la proposición indecente de MicrosoftJavier Suárez Ruiz
 
Interfaces Adaptativas en Windows 10
Interfaces Adaptativas en Windows 10Interfaces Adaptativas en Windows 10
Interfaces Adaptativas en Windows 10Javier Suárez Ruiz
 
Tus aplicaciones en pantalla grande con Xbox One
Tus aplicaciones en pantalla grande con Xbox One Tus aplicaciones en pantalla grande con Xbox One
Tus aplicaciones en pantalla grande con Xbox One Javier Suárez Ruiz
 
Microsoft Tech Summit - Taller Xamarin
Microsoft Tech Summit - Taller XamarinMicrosoft Tech Summit - Taller Xamarin
Microsoft Tech Summit - Taller XamarinJavier Suárez Ruiz
 
Creando Aplicaciones UWP para Xbox One
Creando Aplicaciones UWP para Xbox OneCreando Aplicaciones UWP para Xbox One
Creando Aplicaciones UWP para Xbox OneJavier Suárez Ruiz
 

Viewers also liked (18)

Reconnect(); Sevilla - Introducción a Xamarin 4
Reconnect(); Sevilla - Introducción a Xamarin 4Reconnect(); Sevilla - Introducción a Xamarin 4
Reconnect(); Sevilla - Introducción a Xamarin 4
 
Windows 10: One SDK to rule them all
Windows 10: One SDK to rule them allWindows 10: One SDK to rule them all
Windows 10: One SDK to rule them all
 
[Evento WPSUG] Universal Windows Platform Bridges
[Evento WPSUG] Universal Windows Platform Bridges[Evento WPSUG] Universal Windows Platform Bridges
[Evento WPSUG] Universal Windows Platform Bridges
 
Taller Windows 10 TLP Innova
Taller Windows 10 TLP InnovaTaller Windows 10 TLP Innova
Taller Windows 10 TLP Innova
 
Windows 10: Novedades en XAML
Windows 10: Novedades en XAMLWindows 10: Novedades en XAML
Windows 10: Novedades en XAML
 
Talks4Kids 2015 - Consejos Heisenberg para conseguir Apps Windows 10 con 99% ...
Talks4Kids 2015 - Consejos Heisenberg para conseguir Apps Windows 10 con 99% ...Talks4Kids 2015 - Consejos Heisenberg para conseguir Apps Windows 10 con 99% ...
Talks4Kids 2015 - Consejos Heisenberg para conseguir Apps Windows 10 con 99% ...
 
Windows 10 Developer Readiness. Interfaces Adaptativas
Windows 10 Developer Readiness. Interfaces AdaptativasWindows 10 Developer Readiness. Interfaces Adaptativas
Windows 10 Developer Readiness. Interfaces Adaptativas
 
Windows 10: Hel10 World! - Novedades XAML
Windows 10: Hel10 World! - Novedades XAMLWindows 10: Hel10 World! - Novedades XAML
Windows 10: Hel10 World! - Novedades XAML
 
Novedades en Visual Studio Online
Novedades en Visual Studio OnlineNovedades en Visual Studio Online
Novedades en Visual Studio Online
 
Introducción al desarrollo de Apps en Windows 10
Introducción al desarrollo de Apps en  Windows 10Introducción al desarrollo de Apps en  Windows 10
Introducción al desarrollo de Apps en Windows 10
 
Reconnect(); Sevilla - Universal Windows Platform
Reconnect(); Sevilla - Universal Windows PlatformReconnect(); Sevilla - Universal Windows Platform
Reconnect(); Sevilla - Universal Windows Platform
 
Regreso al futuro, la proposición indecente de Microsoft
Regreso al futuro, la proposición indecente de MicrosoftRegreso al futuro, la proposición indecente de Microsoft
Regreso al futuro, la proposición indecente de Microsoft
 
Interfaces Adaptativas en Windows 10
Interfaces Adaptativas en Windows 10Interfaces Adaptativas en Windows 10
Interfaces Adaptativas en Windows 10
 
Novedades en XAML
Novedades en XAMLNovedades en XAML
Novedades en XAML
 
Tus aplicaciones en pantalla grande con Xbox One
Tus aplicaciones en pantalla grande con Xbox One Tus aplicaciones en pantalla grande con Xbox One
Tus aplicaciones en pantalla grande con Xbox One
 
Microsoft Tech Summit - Taller Xamarin
Microsoft Tech Summit - Taller XamarinMicrosoft Tech Summit - Taller Xamarin
Microsoft Tech Summit - Taller Xamarin
 
Extendiendo Xamarin.Forms
Extendiendo Xamarin.FormsExtendiendo Xamarin.Forms
Extendiendo Xamarin.Forms
 
Creando Aplicaciones UWP para Xbox One
Creando Aplicaciones UWP para Xbox OneCreando Aplicaciones UWP para Xbox One
Creando Aplicaciones UWP para Xbox One
 

Similar to Crear Apps Multiplataforma compartiendo la mayor cantidad con Xamarin

Back2Learn MSFT UCuenca - Desarrollo de apps móviles multiplataforma con Xam...
Back2Learn MSFT UCuenca - Desarrollo de apps móviles multiplataforma con Xam...Back2Learn MSFT UCuenca - Desarrollo de apps móviles multiplataforma con Xam...
Back2Learn MSFT UCuenca - Desarrollo de apps móviles multiplataforma con Xam...Luis Beltran
 
Llevando tu startup a las tres principales plataformas móviles
Llevando tu startup a las tres principales plataformas móvilesLlevando tu startup a las tres principales plataformas móviles
Llevando tu startup a las tres principales plataformas móvilesJosué Yeray Julián Ferreiro
 
Xamarin XantarDev I Edition
Xamarin XantarDev I EditionXamarin XantarDev I Edition
Xamarin XantarDev I EditionDavid Gonzalo
 
OpenSouthCode 2018: Taller Xamarin
OpenSouthCode 2018: Taller XamarinOpenSouthCode 2018: Taller Xamarin
OpenSouthCode 2018: Taller XamarinJavier Suárez Ruiz
 
TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...
TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...
TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...Sorey García
 
Arquitectura en Aplicaciones Xamarin
Arquitectura en Aplicaciones XamarinArquitectura en Aplicaciones Xamarin
Arquitectura en Aplicaciones XamarinJavier Suárez Ruiz
 
diapositivas de XAMARIN
diapositivas de XAMARINdiapositivas de XAMARIN
diapositivas de XAMARINAlonso Alvarez
 
Novedades Xamarin Connect(); 2017
Novedades Xamarin Connect(); 2017Novedades Xamarin Connect(); 2017
Novedades Xamarin Connect(); 2017Javier Suárez Ruiz
 
Aumento de productividad, herramientas Xamarin
Aumento de productividad, herramientas XamarinAumento de productividad, herramientas Xamarin
Aumento de productividad, herramientas XamarinJavier Suárez Ruiz
 
COECYS - Introducción al desarrollo de apps multiplataforma con Xamarin.pptx
COECYS - Introducción al desarrollo de apps multiplataforma con Xamarin.pptxCOECYS - Introducción al desarrollo de apps multiplataforma con Xamarin.pptx
COECYS - Introducción al desarrollo de apps multiplataforma con Xamarin.pptxLuis Beltran
 
Tech Club Asturias: Un vistazo al presente y futuro de Xamarin.Forms
Tech Club Asturias: Un vistazo al presente y futuro de Xamarin.FormsTech Club Asturias: Un vistazo al presente y futuro de Xamarin.Forms
Tech Club Asturias: Un vistazo al presente y futuro de Xamarin.FormsJavier Suárez Ruiz
 
Women Who Code Bogota: Introduction to Xamarin Forms
Women Who Code Bogota: Introduction to Xamarin FormsWomen Who Code Bogota: Introduction to Xamarin Forms
Women Who Code Bogota: Introduction to Xamarin FormsLeomaris Reyes
 
Introducción a Xamarin utilizando MVVMCross
Introducción a Xamarin utilizando MVVMCrossIntroducción a Xamarin utilizando MVVMCross
Introducción a Xamarin utilizando MVVMCrossJavier Suárez Ruiz
 

Similar to Crear Apps Multiplataforma compartiendo la mayor cantidad con Xamarin (20)

Back2Learn MSFT UCuenca - Desarrollo de apps móviles multiplataforma con Xam...
Back2Learn MSFT UCuenca - Desarrollo de apps móviles multiplataforma con Xam...Back2Learn MSFT UCuenca - Desarrollo de apps móviles multiplataforma con Xam...
Back2Learn MSFT UCuenca - Desarrollo de apps móviles multiplataforma con Xam...
 
Llevando tu startup a las tres principales plataformas móviles
Llevando tu startup a las tres principales plataformas móvilesLlevando tu startup a las tres principales plataformas móviles
Llevando tu startup a las tres principales plataformas móviles
 
Introducción a Xamarin
Introducción a XamarinIntroducción a Xamarin
Introducción a Xamarin
 
Xamarin XantarDev I Edition
Xamarin XantarDev I EditionXamarin XantarDev I Edition
Xamarin XantarDev I Edition
 
OpenSouthCode 2018: Taller Xamarin
OpenSouthCode 2018: Taller XamarinOpenSouthCode 2018: Taller Xamarin
OpenSouthCode 2018: Taller Xamarin
 
TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...
TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...
TechDay 2015 - C# y XAML: El poder de construir aplicaciones en todas las pla...
 
Arquitectura en Aplicaciones Xamarin
Arquitectura en Aplicaciones XamarinArquitectura en Aplicaciones Xamarin
Arquitectura en Aplicaciones Xamarin
 
primera aplicacion Xamarin.pptx
primera aplicacion Xamarin.pptxprimera aplicacion Xamarin.pptx
primera aplicacion Xamarin.pptx
 
diapositivas de XAMARIN
diapositivas de XAMARINdiapositivas de XAMARIN
diapositivas de XAMARIN
 
Expo. moviles
Expo. movilesExpo. moviles
Expo. moviles
 
Introducción a xamarin
Introducción a xamarinIntroducción a xamarin
Introducción a xamarin
 
Novedades Xamarin Connect(); 2017
Novedades Xamarin Connect(); 2017Novedades Xamarin Connect(); 2017
Novedades Xamarin Connect(); 2017
 
Aumento de productividad, herramientas Xamarin
Aumento de productividad, herramientas XamarinAumento de productividad, herramientas Xamarin
Aumento de productividad, herramientas Xamarin
 
Introducción a Live XAML
Introducción a Live XAMLIntroducción a Live XAML
Introducción a Live XAML
 
Xamarin 360
Xamarin 360Xamarin 360
Xamarin 360
 
COECYS - Introducción al desarrollo de apps multiplataforma con Xamarin.pptx
COECYS - Introducción al desarrollo de apps multiplataforma con Xamarin.pptxCOECYS - Introducción al desarrollo de apps multiplataforma con Xamarin.pptx
COECYS - Introducción al desarrollo de apps multiplataforma con Xamarin.pptx
 
Tech Club Asturias: Un vistazo al presente y futuro de Xamarin.Forms
Tech Club Asturias: Un vistazo al presente y futuro de Xamarin.FormsTech Club Asturias: Un vistazo al presente y futuro de Xamarin.Forms
Tech Club Asturias: Un vistazo al presente y futuro de Xamarin.Forms
 
Women Who Code Bogota: Introduction to Xamarin Forms
Women Who Code Bogota: Introduction to Xamarin FormsWomen Who Code Bogota: Introduction to Xamarin Forms
Women Who Code Bogota: Introduction to Xamarin Forms
 
Introducción a Xamarin utilizando MVVMCross
Introducción a Xamarin utilizando MVVMCrossIntroducción a Xamarin utilizando MVVMCross
Introducción a Xamarin utilizando MVVMCross
 
.NET Day Guatemala
.NET Day Guatemala.NET Day Guatemala
.NET Day Guatemala
 

More from Javier Suárez Ruiz

Cape Town MS Developer User Group: Xamarin Community Toolkit
Cape Town MS Developer User Group: Xamarin Community ToolkitCape Town MS Developer User Group: Xamarin Community Toolkit
Cape Town MS Developer User Group: Xamarin Community ToolkitJavier Suárez Ruiz
 
Monkey Conf 2020: Xamarin Community Toolkit: More possibilities with Xamarin....
Monkey Conf 2020: Xamarin Community Toolkit: More possibilities with Xamarin....Monkey Conf 2020: Xamarin Community Toolkit: More possibilities with Xamarin....
Monkey Conf 2020: Xamarin Community Toolkit: More possibilities with Xamarin....Javier Suárez Ruiz
 
Monkey Conf 2020: .NET MAUI Handlers
Monkey Conf 2020: .NET MAUI HandlersMonkey Conf 2020: .NET MAUI Handlers
Monkey Conf 2020: .NET MAUI HandlersJavier Suárez Ruiz
 
Creando controles para Xamarin.Forms
Creando controles para Xamarin.FormsCreando controles para Xamarin.Forms
Creando controles para Xamarin.FormsJavier Suárez Ruiz
 
Monkey Conf 2019: Presente y futuro de Xamarin.Forms
Monkey Conf 2019: Presente y futuro de Xamarin.FormsMonkey Conf 2019: Presente y futuro de Xamarin.Forms
Monkey Conf 2019: Presente y futuro de Xamarin.FormsJavier Suárez Ruiz
 
Crear interfaces de usuario atractivas con Xamarin.Forms
Crear interfaces de usuario atractivas con Xamarin.FormsCrear interfaces de usuario atractivas con Xamarin.Forms
Crear interfaces de usuario atractivas con Xamarin.FormsJavier Suárez Ruiz
 
DotNet 2019: Optimizando Apps con Xamarin.Forms
DotNet 2019: Optimizando Apps con Xamarin.FormsDotNet 2019: Optimizando Apps con Xamarin.Forms
DotNet 2019: Optimizando Apps con Xamarin.FormsJavier Suárez Ruiz
 
Monkey Conf 2018: Conociendo Xamarin.Forms Shell
Monkey Conf 2018: Conociendo Xamarin.Forms ShellMonkey Conf 2018: Conociendo Xamarin.Forms Shell
Monkey Conf 2018: Conociendo Xamarin.Forms ShellJavier Suárez Ruiz
 
Analizando interfaces de usuario avanzadas con Xamarin.Forms
Analizando interfaces de usuario avanzadas con Xamarin.FormsAnalizando interfaces de usuario avanzadas con Xamarin.Forms
Analizando interfaces de usuario avanzadas con Xamarin.FormsJavier Suárez Ruiz
 
DotNet2018: Xamarin.Forms Everywhere!
DotNet2018: Xamarin.Forms Everywhere!DotNet2018: Xamarin.Forms Everywhere!
DotNet2018: Xamarin.Forms Everywhere!Javier Suárez Ruiz
 
Desarrollo Xamarin, más allá del desarrollo
Desarrollo Xamarin, más allá del desarrolloDesarrollo Xamarin, más allá del desarrollo
Desarrollo Xamarin, más allá del desarrolloJavier Suárez Ruiz
 
Codemotion 2017 - Taller Xamarin
Codemotion 2017 - Taller XamarinCodemotion 2017 - Taller Xamarin
Codemotion 2017 - Taller XamarinJavier Suárez Ruiz
 
SVQXDG - Introducción a Embeddinator-4000
SVQXDG - Introducción a Embeddinator-4000SVQXDG - Introducción a Embeddinator-4000
SVQXDG - Introducción a Embeddinator-4000Javier Suárez Ruiz
 
dotNetMálaga 2017 - Taller Hololens con Wave Engine
dotNetMálaga 2017 - Taller Hololens con Wave EnginedotNetMálaga 2017 - Taller Hololens con Wave Engine
dotNetMálaga 2017 - Taller Hololens con Wave EngineJavier Suárez Ruiz
 

More from Javier Suárez Ruiz (20)

Cape Town MS Developer User Group: Xamarin Community Toolkit
Cape Town MS Developer User Group: Xamarin Community ToolkitCape Town MS Developer User Group: Xamarin Community Toolkit
Cape Town MS Developer User Group: Xamarin Community Toolkit
 
DotNetDom: El futuro de Xamarin
DotNetDom: El futuro de XamarinDotNetDom: El futuro de Xamarin
DotNetDom: El futuro de Xamarin
 
Monkey Conf 2020: Xamarin Community Toolkit: More possibilities with Xamarin....
Monkey Conf 2020: Xamarin Community Toolkit: More possibilities with Xamarin....Monkey Conf 2020: Xamarin Community Toolkit: More possibilities with Xamarin....
Monkey Conf 2020: Xamarin Community Toolkit: More possibilities with Xamarin....
 
Monkey Conf 2020: .NET MAUI Handlers
Monkey Conf 2020: .NET MAUI HandlersMonkey Conf 2020: .NET MAUI Handlers
Monkey Conf 2020: .NET MAUI Handlers
 
Creando controles para Xamarin.Forms
Creando controles para Xamarin.FormsCreando controles para Xamarin.Forms
Creando controles para Xamarin.Forms
 
Monkey Conf 2019: Presente y futuro de Xamarin.Forms
Monkey Conf 2019: Presente y futuro de Xamarin.FormsMonkey Conf 2019: Presente y futuro de Xamarin.Forms
Monkey Conf 2019: Presente y futuro de Xamarin.Forms
 
Crear interfaces de usuario atractivas con Xamarin.Forms
Crear interfaces de usuario atractivas con Xamarin.FormsCrear interfaces de usuario atractivas con Xamarin.Forms
Crear interfaces de usuario atractivas con Xamarin.Forms
 
#XamarinUIJuly Summary
#XamarinUIJuly Summary#XamarinUIJuly Summary
#XamarinUIJuly Summary
 
DotNet 2019: Optimizando Apps con Xamarin.Forms
DotNet 2019: Optimizando Apps con Xamarin.FormsDotNet 2019: Optimizando Apps con Xamarin.Forms
DotNet 2019: Optimizando Apps con Xamarin.Forms
 
Taller Xamarin Monkey Conf 2018
Taller Xamarin Monkey Conf 2018Taller Xamarin Monkey Conf 2018
Taller Xamarin Monkey Conf 2018
 
Monkey Conf 2018: Conociendo Xamarin.Forms Shell
Monkey Conf 2018: Conociendo Xamarin.Forms ShellMonkey Conf 2018: Conociendo Xamarin.Forms Shell
Monkey Conf 2018: Conociendo Xamarin.Forms Shell
 
.Net Conf Sevilla 2018
.Net Conf Sevilla 2018.Net Conf Sevilla 2018
.Net Conf Sevilla 2018
 
Analizando interfaces de usuario avanzadas con Xamarin.Forms
Analizando interfaces de usuario avanzadas con Xamarin.FormsAnalizando interfaces de usuario avanzadas con Xamarin.Forms
Analizando interfaces de usuario avanzadas con Xamarin.Forms
 
DotNet2018: Xamarin.Forms Everywhere!
DotNet2018: Xamarin.Forms Everywhere!DotNet2018: Xamarin.Forms Everywhere!
DotNet2018: Xamarin.Forms Everywhere!
 
Novedades Xamarin 3.0 Preview
Novedades Xamarin 3.0 PreviewNovedades Xamarin 3.0 Preview
Novedades Xamarin 3.0 Preview
 
Desarrollo Xamarin, más allá del desarrollo
Desarrollo Xamarin, más allá del desarrolloDesarrollo Xamarin, más allá del desarrollo
Desarrollo Xamarin, más allá del desarrollo
 
Introducción a Xamarin.Forms
Introducción a Xamarin.FormsIntroducción a Xamarin.Forms
Introducción a Xamarin.Forms
 
Codemotion 2017 - Taller Xamarin
Codemotion 2017 - Taller XamarinCodemotion 2017 - Taller Xamarin
Codemotion 2017 - Taller Xamarin
 
SVQXDG - Introducción a Embeddinator-4000
SVQXDG - Introducción a Embeddinator-4000SVQXDG - Introducción a Embeddinator-4000
SVQXDG - Introducción a Embeddinator-4000
 
dotNetMálaga 2017 - Taller Hololens con Wave Engine
dotNetMálaga 2017 - Taller Hololens con Wave EnginedotNetMálaga 2017 - Taller Hololens con Wave Engine
dotNetMálaga 2017 - Taller Hololens con Wave Engine
 

Crear Apps Multiplataforma compartiendo la mayor cantidad con Xamarin

  • 1. 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.
  • 2. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . Javier Suárez XAML Team Lead Bravent Microsoft MVP Windows Platform Development • Blog: http://geeks.ms/blogs/jsuarez • Email: javiersuarezruiz@hotmail.com • Twitter: @jsuarezruiz
  • 3. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . EL PROBLEMA Creas la misma App varias veces
  • 4. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . EL ENFOQUE “ESCRIBE UNA VEZ” PARA TODO Mínimo Denominador Común
  • 5. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . EL ENFOQUE DE XAMARIN Nativo compartiendo código
  • 6. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . DEMO Primera App Xamarin
  • 7. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . COMPARATIVA DE PLATAFORMAS MÓVILES NATIVOS 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
  • 8. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . 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 MVVMPatrón diseño
  • 9. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . MVVM View ViewModel Model get/set Propiedades Comandos Notifica cambios C# Models View View ViewModel ViewModel Model Model Cross Platform Específico de la Plataforma
  • 10. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . 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.
  • 11. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . 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
  • 12. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . PORTABLE CLASS LIBRARY •1 Librería •Multiples Platformas •Incluyendo: •Xamarin.Android •Xamarin.iOS
  • 13. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . 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
  • 14. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . MVVMCross & PCL View ViewModel Model Propiedades Comandos Notifica cambios C# Model View View ViewModel ViewModel Model Model Cross Platform -PCL Específico de Plataforma
  • 15. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . Binding OneWay PersonViewModel FirstName LastName DateOfBirth First Name Jon Last Name Doe Date of birth 12/07/1989
  • 16. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . UI Syntax
  • 17. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . Two Way Binding PersonViewModel FirstName LastName DateOfBirth First Name Jon Last Name Doe Date of birth 12/07/1989
  • 18. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . UI Syntax
  • 19. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . Value Conversion PersonViewModel FirstName LastName DateOfBirth First Name Jon Last Name Doe Age 24 “Age” Conversion
  • 20. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . IMvxValueConverter
  • 21. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . AgeValueConverter
  • 22. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . UI Syntax
  • 23. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . UI Syntax
  • 24. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . Acciones (Comandos) PersonViewModel FirstName LastName DateOfBirth First Name Jon Last Name Doe Date of birth 12/07/1989 AddCommand
  • 25. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . ICommand
  • 26. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . ViewModel Command
  • 27. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . UI Syntax
  • 28. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . DEMO Utilizando MVVMCross
  • 29. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . Xamarin + Xamarin.Forms Con Xamarin.Forms: Se comparte más, controles compartidos El enfoque tradicional de Xamarin Shared UI Code
  • 30. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . Xamarin + Xamarin.Forms • Permite crear facilmente y con rapidez interfaces de usuario nativas compartidas • Los elementos de Xamarin.Forms son mapeados a elementos nativos y behaviors propios de cada plataforma • Podemos mezclar Xamarin.Forms con APIs nativas
  • 31. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . Plataformas soportadas por Xamarin.Forms Soporta: • Android 4.0+ • iOS 6.1+ • Windows Phone 8.0 (Silverlight) & Windows Phone 8.1 (WinRT)
  • 32. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . Que incluye  40+ tipos de páginas, Layouts, y controles  Se puede utilizer code behind o XAML  Two-way Data Binding  Navegación  API de animaciones  Servicio de dependencias  Messaging Center
  • 33. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . Páginas Content MasterDetail Navigation Tabbed Carousel
  • 34. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . Layouts Stack Absolute Relative Grid ContentVie w ScrollView Frame
  • 35. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . Controles ActivityIndicato r BoxView Button DatePicker Editor Entry Image Label ListView Map OpenGLView Picker ProgressBar SearchBar Slider Stepper TableView TimePicker WebView EntryCell ImageCell SwitchCell TextCell ViewCell
  • 36. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . Arquitectura de Apps con Xamarin.Forms View ViewModel Model Propiedades Comandos Notifica cambios C# Model View View ViewModel ViewModel Model Model Cross Platform –PCL o Shared
  • 37. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . COMPARATIVA DE PLATAFORMAS MÓVILES NATIV 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
  • 38. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . DEMO Xamarin.Forms utilizando MVVM
  • 39. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . ¿Qué podemos compartir con este planteamiento?
  • 41. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . El enfoque de Xamarin Con Xamarin.Forms: Se comparte más, controles compartidos El enfoque tradicional de Xamarin Shared UI Code
  • 43. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . TÉCNICAS DE REUTILIZACIÓN DE CÓDIGO
  • 44. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . MVVM EN APLICACIONES UNIVERSALES Data Binding Comandos Interfaz de Usuario Lógica de Negocio Lógica de Negocio Lógica de Presentación
  • 45. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . ¿Y todo esto con una App “real”?
  • 47. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . Utilizando Xamarin Classic
  • 48. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . COMPARATIVA DE PLATAFORMAS MÓVILES XAMA IDE Lenguaje Vistas iOS Android Windows Phone Visual Studio Visual Studio Visual Studio C# C# C# Storyboard AXML XAML MVVM MVVM MVVMPatrón diseño
  • 49. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . MVVM View ViewModel Model get/set Propiedades Comandos Notifica cambios C# Models View View ViewModel ViewModel Model Model Cross Platform Específico de la Plataforma
  • 50. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . DEMO Nuestra App utilizando MVVMCross
  • 51. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . Utilizando Xamarin.Forms
  • 52. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . COMPARATIVA DE PLATAFORMAS MÓVILES IDE Lenguaje Vistas iOS Android Windows Phone Visual Studio Visual Studio Visual Studio C# C# C# XAML XAML XAML MVVM MVVM MVVMPatrón diseño
  • 53. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . ARQUITECTURA DE APPS CON XAMARIN.FORMS View ViewModel Model Propiedades Comandos Notifica cambios C# Model View View ViewModel ViewModel Model Model Cross Platform –PCL o Shared
  • 54. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . DEMO Ahora utilizando Xamarin.Forms
  • 55. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . 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#
  • 56. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . UTILIZANDO XAMARIN CLASSIC Web Services Web Services Backend C# App Services Services Services Services Model View Model View View View
  • 57. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . 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
  • 58. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . CONCLUSIONES RÁPIDAS 1. Siendo ordenado y siguiendo una serie de patrones podemos compartir entre el 65% y el 90% 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.
  • 59. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . ¿PREGUNTAS y RESPUESTAS? Dudas? P&R
  • 60. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . GRACIAS a TODOS Por vuestro tiempo! Javier Suárez Microsoft MVP Windows Platform Development • Blog: http://geeks.ms/blogs/jsuarez • Email: javiersuarezruiz@hotmail.com • Twitter: @jsuarezruiz
  • 61. COMPARTIR AL MÁXIMO MOBILE DEV DAY . . 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.