Arquitectura en Aplicaciones Xamarin
-
Upload
javier-suarez-ruiz -
Category
Social Media
-
view
1.528 -
download
1
Transcript of Arquitectura en Aplicaciones Xamarin
Javier SuárezMicrosoft MVP Windows Platform Development
• Blog: http://geeks.ms/blogs/jsuarez
• Email: [email protected]
• Twitter: @jsuarezruiz
¿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.
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
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
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
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
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
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
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.
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
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
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
Binding OneWay
PersonViewModel
FirstName
LastName
DateOfBirth
First Name
Jon
Last Name
Doe
Date of birth
12/07/1989
Two Way Binding
PersonViewModel
FirstName
LastName
DateOfBirth
First Name
Jon
Last Name
Doe
Date of birth
12/07/1989
Value Conversion
PersonViewModel
FirstName
LastName
DateOfBirth
First Name
Jon
Last Name
Doe
Age
24
“Age” Conversion
MyViewModel
Necesita Localización
Necesita SQL
Necesita CalculadoraMy TaxCalculator
Windows Phone Location
Inversión de Control
Windows Phone SQL
El contenedor
MyViewModel
Necesita Localización
Necesita SQL
Necesita CalculatorMy TaxCalculator
iOS Location
Inversión de Control
iOS SQL
El contenedor
Acciones (Comandos)
PersonViewModel
FirstName
LastName
DateOfBirth
First Name
Jon
Last Name
Doe
Date of birth
12/07/1989
AddCommand
Colecciones
PeopleViewModel
HackersList<PersonViewModel>
Greg
Jon
Daniel
Cool Hackers
Jon@redth
Greg@gshackles
Daniel@dsplaisted
Tomasz
Tomasz@cheesebar
Seguimos avanzando, trabajando con colecciones de datos y controles listado
Navegación
Uso de parámetrosShowViewModel<DetailViewModel>(new DetailParameters() { Index = 2 });
public void Init(DetailParameters parameters)
{
// use the parameters here
}
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.
Javier SuárezMicrosoft MVP Windows Platform Development
• Blog: http://geeks.ms/blogs/jsuarez
• Email: [email protected]
• Twitter: @jsuarezruiz
GRACIAS
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