Si estás leyendo este post, muy probablemente ya habrás oído hablar de las bondades de la programación en Xamarin, y es que nos permite reutilizar gran parte de nuestro código a la hora de crear aplicaciones multiplataforma.

Llegada la hora de ponerse a programar y meternos en harina por primera vez es cuando nos asaltan las dudas, al menos en mi caso. Xamarin Forms… Xamarin. Android…. Xamarin.Ios…. ¿what?…. Estos dos últimos junto con Xamarin para Windows Phone (ese gran olvidado, sniff) conforman lo que se denomina Xamarin Nativo. Teniendo en cuenta que el emblema de Xamarin es la reutilización del código. ¿En qué se diferencian Xamarin Forms de Xamarin Nativo?

View post on imgur.com

Como podemos apreciar en la imagen,  en una solución utilizando el modelo de Xamarin tradicional o Nativo compartiremos toda la parte de la lógica de negocio, bien en un proyecto Shared o en una Portable Class Library (aka PCL) dejando la interfaz de usuario para ser desarrollada en el propio lenguaje de cada plataforma (AXML en Android, los StoryBoard de IOS, XAML en Windows).

En cambio, con Xamarin Forms podemos desarrollar íntegramente nuestra aplicación para las 3 plataformas, incluidas las vistas en la clase portable (igualmente Shared o PCL). La propia configuración del Forms se encarga de adaptar los elementos gráficos a la configuración nativa de cada plataforma.  En la parte específica de cada plataforma desarrollaremos:

  • CustomRenderers: nos permite personalizar la visualización y el comportamiento de los controles para Android iOS o Windows Phone. De esta manera salvaremos las limitaciones de Xamarin Forms en cuestiones de edición y visualización, accediendo a las propiedades nativas de cada plataforma.
  • DependencyServices: nos permite acceder desde Formsa características nativas de cada plataforma, como podría ser el GPS, cámara, etc.  En cada plataforma la forma de acceder es diferente y debemos definir la forma de acceso.
  • Iconos e Imágenes. En cada plataforma se requieren un tipo de imágenes de fondo e iconos, en Android por ejemplo podemos incluir nuestras imágenes hasta en 4 resoluciones diferentes para que se adapte a la resolución del tipo de dispositivo.

 

VENTAJAS XAMARIN FORMS 

  • Al compartir la lógica de negocio y gran parte del código de la interfaz de usuario, el desarrollo de apps es más rápido.
  • Implementa un servicio de mensajería que nos facilita la comunicación entre nuestros ViewModels y las vistas.
  • Podemos construir una sola app para las 3 plataformas utilizando un solo lenguaje de programación (C# lol)
  • No es necesario aprender a utilizar todos los UI Frameworks nativos.
  • Gestiona por defecto el cambio de orientación de la pantalla del terminal.

 

 VENTAJAS XAMARIN NATIVO 

  • Al desarrollar las interfaces de usuario 100% en código nativo le sacaremos el máximo rendimiento.
  • Poder utilizar el designer de Visual Studio para crear nuestras vistas, utilizando el toolbox y haciendo drag and drop, nos simplifica sobremanera el diseño de la interfaz de usuario.
  • Mayor accesibilidad a las APIS nativas de cada plataforma

 

¿Cuándo debemos de usar Xamarin Nativo?

  • Cuando la app requiere cierta complejidad en diseño.
  • Complejidad en las APIS requeridas en la app, en las que si existen soluciones para Xamarin. Android y Xamarin.Ios, pero aun no en Forms.
  • Cuando los requerimientos de nuestra app requieren de animaciones complejas
  • Cuando solo queramos hacer nuestras aplicación en una sola plataforma (esta es de Perogrullo…..)

En el caso de que no cumplirse ninguna de estas opciones Xamarin.Forms será suficiente para desarrollar la app.