miércoles, 28 de febrero de 2018

Xamarin, una alternativa emergente en el mundo del desarrollo mobile

Para quienes estamos acostumbrados a utilizar Visual Studio como entorno de desarrollo para la tecnología .NET y C# como lenguaje de programación, Xamarin y Xamarin.Forms resultan herramientas llamativas y poderosas que nos permiten generar aplicaciones Mobile multiplataforma en un ambiente conocido y, además, nos da la ventaja de poder mantener el mismo lenguaje.

Una de las principales características de Xamarin es que, si bien desarrollamos en un lenguaje que nos es familiar, la compilación se realiza nativamente en los lenguajes utilizados en los dispositivos destino. De esta forma, es una alternativa muy performante en comparación a otras herramientas como Apache Cordova, que ejecuta la aplicación en un browser resultando costoso en cuanto a recursos del dispositivo. 

Otro punto fuerte es la posibilidad de generar código reutilizable, centralizando toda la lógica de negocio en un solo lugar, ahorrando código y tiempo al momento de desarrollar. 

Además, esto nos permite mantener el código de una manera más sencilla, ya que haremos las modificaciones en un único lugar y afectará por igual a todas las plataformas.

En el caso de Xamarin.Forms, nos encontramos con una herramienta que nos permite crear la interfaz de usuario con un único código que será interpretado por cada sistema operativo y renderizado de la manera más adecuada para cada uno de ellos. Esto se logra mediante un lenguaje denominado XAML, que resulta ser una variación del lenguaje XML con etiquetas propias de Xamarin.Forms. 

Un aspecto negativo es la falta de una vista previa (designer) en Visual Studio, debiendo ejecutar el emulador para poder visualizar el resultado del código en la UI. 


Esta característica de XAML se vuelve una desventaja al momento de querer realizar aplicaciones customizadas de acuerdo a cada sistema operativo. En estos casos es donde Xamarin resulta una mejor propuesta a la hora de diseñar una interfaz de usuario más personalizada para cada tipo de dispositivo.


Uno de los problemas más frecuentes con el cual uno se puede encontrar al comenzar a trabajar con esta herramienta en Visual Studio es un asunto de referencias. Nuget nos ofrece actualizaciones constantemente, lo cual a simple vista es una característica muy eficiente. Sin embargo, en este caso puede jugarnos en contra. Por ejemplo, si en el proyecto de Android tenemos configurada la versión de destino en 6.0 (API 23),  Xamarin.Forms tendrá ciertas dependencias específicas para los packages de Android Support y si actualizamos todos los packages, lo más probable es que estas referencias nos arrojen algún error de incompatibilidad.

Una manera sencilla de resolver esto es borrar manualmente todos los packages del Nuget en el proyecto de Android y luego volver a agregar aquel de Xamarin.Forms. Esto va a causar que se descarguen automáticamente todas las dependencias compatibles para el tipo de proyecto, quitando la posibilidad de errores de incompatibilidad.

Ejemplo de código con controles básicos como Label, Input y Button

Emulador de Android corriendo con el código mostrado anteriormente

En conclusión, gracias a la fuerte apuesta de Microsoft sobre Xamarin, podemos decir que finalmente se ha abierto el mercado de aplicaciones Mobile a aquellos que nos encontramos en el ambiente de tecnologías .NET, pudiendo utilizar cualquiera de estas dos herramientas dependiendo el tipo de aplicación que necesitemos crear y el alcance de plataformas que deseemos tener.

Autores
Javier Ledesma, .NET Developer. 
Nicolás Ramírez, .NET Developer.