¿Te gustaría aprender Xamarin Desarrollo Rápido de Apps Móviles?
Tenemos los cursos que necesitas.¡Haz clic aquí!
Escribir código una vez y utilizarlo en múltiples plataformas ha sido un sueño para muchos desarrolladores software. Aunque esto ha sido posible desde hace un tiempo, siempre ponía en riesgo el mantenimiento, facilidad de prueba o peor, una mala experiencia de usuario.
Desarrollar aplicaciones móviles usando el nativo SDK es, probablemente, el punto de partida para muchos desarrolladores quienes tienen sus raíces en el reino de desarrollo de aplicaciones para escritorio. Programar idiomas sería una barrera para algunos: Si alguien tuviera experiencia en el desarrollo de escritorio Java o aplicaciones back-end, pasar a Android podría ser más fácil que comenzar con Objective-C desde cero para iOS.
Se tuvieron algunas dudas con el desarrollo de aplicaciones multiplataforma, por ejemplo: los frameworks basados en JavaScript como Sencha, Cordova, Titanium, etc. nunca han sido buenas opciones cuando el desempeño es importante. La falta de API y una experiencia de usuario particular era algo clave con estos frameworks.
Pero, existe Xamarin.
¿Qué es Xamarin?
Xamarin es una plataforma de desarrollo que te permite escribir aplicaciones multiplataforma, aunque nativa para iOS, Android y Windows Phone en C# y .NET.
Xamarin proporciona bindings C# a las API nativas Android y iOS. Esto te da el poder para usar toda la interfaz de usuario nativo, notificaciones, gráficos, animación y otras características de teléfono y todas usan C#.
Xamarin alcanza cada lanzamiento nuevo de Android y iOS, con un lanzamiento que incluye bindings para sus nuevas API.
El puerto de .NET de Xamarin incluye características como tipos de data, genéricos, colección de papelera de reciclaje, language-integrated query (LINQ), patrón de programación asincrónica, delegación y un subconjunto de Windows Communication Foundation (WCF). Las bibliotecas son manejadas con un linger para incluir sólo los componentes referidos.
Xamarin.Forms es una capa que se encuentra sobre las otros bindings UI y la API Windows Phone, la cual proporciona una biblioteca de interfaz de usuario completamente multiplataforma.
Escribir Aplicaciones Multiplataforma
Para poder escribir aplicaciones multiplataforma con Xamarin, los desarrolladores necesitan escoger uno de los dos tipos de proyecto disponibles:
- Portable Class Library (PCL)
- Proyecto Compartido
El PCL te permite escribir código que se puede compartir entre plataformas múltiples pero con una limitante. Dado que no todas las API .NET están disponibles en todas las plataformas, con un proyecto PLC, lo estarás limitando a ser ejecutado solo en plataformas para las que está dirigido.
La tabla de abajo muestra cuales API están disponibles en qué plataformas:
Feature | .NET Framework | Windows Store Apps | Silverlight | Windows Phone | Xamarin |
---|---|---|---|---|---|
Core | Y | Y | Y | Y | Y |
LINQ | Y | Y | Y | Y | Y |
IQueryable | Y | Y | Y | 7.5+ | Y |
Serialization | Y | Y | Y | Y | Y |
Data Annotations | 4.0.3+ | Y | Y | Y | Y |
Durante el proceso de construcción, un PCL se compila en distintos DLL y se carga por Mono durante la ejecución. Una implementación diferente pero de la misma interfaz se puede proporcionar durante la ejecución.
Por otra parte, los proyectos compartidos te dan más control, porque te permiten escribir código de plataforma específica para cada plataforma que quieras apoyar. El código en un proyecto compartido puede contener directivas de conversión de datos que activarán o desactivarán secciones de código, dependiendo de qué proyecto de aplicación está usando el código.
A diferencia de un PCL, un proyecto compartido no produce ningún DLL. El código está incluido directamente en el proyecto final.
Dar Estructura a tu Código Multiplataforma con MvvmCross
Un código reusable puede ayudar a ahorrar dinero y tiempo a los equipos de desarrollo. Sin embargo, un código bien estructurado le hace la vida más fácil a los desarrolladores. Nadie aprecia un código bien escrito y libre de bugs como los desarrolladores.
Xamarin solo proporciona un mecanismo el cual hace más fácil escribir código reusable multiplataforma.
Los desarrolladores móviles están familiarizados con escenarios donde tienen que escribir la misma lógica dos veces o más para poder apoyar iOS, Android y otras plataformas. Pero con Xamarin, como lo expliqué en el capítulo pasado, es fácil reusar un código en otras plataformas, aunque haya sido escrito para una plataforma en particular.
Entonces, ¿en qué momento entra MvvmCross?
MvvmCross, como su nombre lo insinúa, hace posible el uso del patrón MVVM en aplicaciones Xamarin. Viene con varias bibliotecas, APIs y servicios que son muy importantes en el desarrollo de la aplicación multiplataforma.
MvvmCross puede reducir, significativamente, la cantidad de código boilerplate qué habrías escrito (en ocasiones repetidas veces en distintos idiomas) en cualquier otro acercamiento al desarrollo de aplicaciones.
Estructura de una Solución MvvmCross
La comunidad MvvmCross recomienda una manera muy simple y eficiente para estructurar una solución MvvmCross:
<ProjectName>.Core
<ProjectName>.UI.Droid
<ProjectName>.UI.iOS
El proyecto Core en una solución MvvmCross está relacionada al código reusable. El proyecto Core es un proyecto PCL de Xamarin, en el que el enfoque principal es la reusabilidad.
Cualquier código escrito en Core debería ser, en lo posible, agnóstico de plataforma. Sólo debería contener lógica, la cual puede ser reusada en todas las plataformas. El proyecto Core no debe usar las API Android ni iOS, tampoco ingresar nada específico a ninguna plataforma.
La capa lógica de negocio, capa de data y la comunicación back-end, son perfectos candidatos para ser incluidos en el proyecto Core. La navegación a través de vista de jerarquía (actividades, fragmentos, etc.) se conseguirá en el Core.
Antes de continuar, es necesario entender un patrón de diseño arquitectural, lo cual es crucial para entender más sobre MvvmCross y cómo funciona. Como se puede percibir por su nombre, MvvmCross depende, grandemente, del patrón MVVM.
MVVM es un patrón de diseño arquitectural, el cual facilita la separación de la interfaz gráfica de usuario de la lógica de negocio y la data back-end.
¿Cómo se usa este patrón en MvvmCross?
Bueno, dado que queremos alcanzar un alto nivel de reusabilidad de nuestro código, queremos tener lo más posible en nuestro Core, que es un proyecto PLC. Ya que las vistas son la única parte del código que difiere de una plataforma a otra, no las podemos reusar entre plataformas. Esa parte se implementa en los proyectos relacionados a la plataforma.
MvvmCross nos da la habilidad de crear una navegación de aplicación desde Core usando ViewModels.
Te esperamos en los próximos artículos en donde hablaremos mas acerca de estos temas que hoy en día son de importancia e interés en el mundo de la tecnología.
¿Te gustaría aprender Xamarin Desarrollo Rápido de Apps Móviles?
Tenemos los cursos que necesitas.¡Haz clic aquí!