desarrollando apps multiplataforma con xamarin y mvvmcross

12
Desarrollando apps multiplataforma con Xamarin La evolución hacia MVVMCross Ivan Rodrigo Toledo Ivanovic CTO de Birdie Windows Development MVP @itoledo – [email protected]

Upload: ivan-toledo

Post on 11-Aug-2015

37 views

Category:

Software


9 download

TRANSCRIPT

Desarrollando apps multiplataforma con XamarinLa evolución hacia

MVVMCross

Ivan Rodrigo Toledo IvanovicCTO de BirdieWindows Development MVP@itoledo – [email protected]

Nativo es mejor! Cierto que si…?

Android Windows Phone

BlackBerry

iPhone

Windows 8

• Rendimiento• UX/UI• Diferenciación de plataformas• Patrones de diseño• Experiencia

Introducción: apps nativas versus híbridas

• Apps se desarrollan en .NET• Linq, WCF, …

• Acceso nativo a las APIs de cada plataforma• No es una herramienta de abstracción

• UI nativas (Layouts en Android, Storyboards en iOS)

• Reutilización de código .NET existente• Librerías, paquetes NuGet, Componentes

• Integrado con Visual Studio

La respuesta es Xamarin

Demo: Xamarin.Android

Crear una calculadora que suma dos números

-Crea proyecto Android

-Crear 2 EditText, un TextView y un botón en layout principal

-Modificar el delegado del evento Click para que sume

Demo: Xamarin.iOS

La misma calculadora pero en iOS!

- Crear proyecto Universal SingleViewApp

- Añadir las 2 cajas de texto y el TextView

- Añadir delegado del evento TouchDown para que sume

Compartiendo código: PCL

• Portable Class Libraries entregan un subconjunto común de funcionalidad de .NET, disponible para todas las plataformas• No tiene acceso a recursos del dispositivo• Apto para lógica, algoritmos, abstracciones de acceso a datos

• Demo: creando una PCL y compartiendo código entre iOS y Android

TextView, Label, TextBlock… Bindings?

-Mecánica de leer los textos y convertirlos a números desde la UI está condenada a errores-Este problema fue solucionado por Microsoft: ViewModels y Bindings-Demo: Calculadora en Windows Phone

Pero no hay Bindings en Android ni iOS!

La solución es MvvmCross!

-Framework de desarrollo móvil basado en MVVM

-Plataformas iOS, Android, Windows Phone, Windows, Mac

-Lógica de pantallas se implementa en ViewModels

-Interfaces y Servicios abstraen la implementación

-Comandos enlazan acciones de la UI con los métodos del ViewModel

-Bindings en todas partes!

Demo: Reimplementando en MvvmCross

• Crear Proyectos Calculadora.Core, Calculadora.Touch y Calculadora.Droid

• Instalar paquete NuGet mvvmcross

• Modificar ViewModel y añadir N1, N2, Resultado, SumarCommand

• Modificar vista para añadir Bindings

Hay mucho más por descubrir!

- Las series de videos de MvvmCross N+1- Colección de plugins que implementan acceso

nativo a características de los dispositivos- Ubicación (GPS)- Cámara- Fragmentos (Android)- etc.

Dudas, consultas?

- Unirse al Meetup de Xamarin!

- Escribirme a [email protected] o @itoledo