Apps Multiplataforma desde Microsoft

Atención: El nivel de este post es 50: Introductorio. Y está dirigido a lectores que no tengan experiencia en el mundo de las apps, pero requieran incursionar en este con una clara perspectiva de la estrategia que tomarán, sobre todo si están pensando en multiplataforma. [UPDATE] Si desean profundizar, al final de este post, hay una referencia a un excelente artículo de una gran amiga.

Me preguntó el cliente: Desde la plataforma Microsoft se puede hacer desarrollo de APPs de manera que estas puedan ser multiplataforma (Android, IOs, WP)

Hay básicamente dos caminos. El nativo y el camino de apps basadas en HTML5

Para ambos Microsoft ofrece herramientas para construirlas desde Visual Studio

En el primer caso, está Xamarin, que es un producto de un tercero que se adiciona a Visual Studio. Con Xamarin, las apps se construyen con C# y se crea un solo backend. El front end se puede construir también de manera común si no es muy complejo a través de Xamarin forms, o se puede optar por crear front end específicos para cada plataforma. Así que se puede aprovechar desde un 80% hasta un 100% del código original de la aplicación. La ventaja del desarrollo nativo es el performance de la app final, así como el poder aprovechar absolutamente todas las características especiales de la plataforma. Al ser un producto de un tercero, el desarrollador debe pagar una licencia para poderlo usar. Y para poder compilar para iOS, se debe tener una MAC.

image

En el segundo caso, se usa Visual Studio Tools for Apache Cordova en una implementación ya propia de Microsoft. Para Visual Studio 2013 update 4 es un instalador adicional y en el preview del 2015 ya viene out of the box. Como mencioné, se usa HTML, CSS y Javascript basándonos en la especificación Open Source de Apache Cordova.

Visual Studio Tools for Apache Cordova

En este caso no se obtiene una aplicación nativa, sino una aplicación que corre en el dominio del control de browser de cada plataform (WebView). Así que se tiene algo así como una aplicación web que corre empaquetada dentro de una app. Esto brinda la posibilidad de escribir una sola app que corra igual en todas las plataformas, pero no aprovecha las características únicas de cada una de ellas. Si la app es muy sencilla o es una app que por ejemplo los empleados de una empresa están obligados a usar, es un buen camino a seguir, ya que se aprovecha el 100% del código base tanto en presentación como en backend. Si es una app para consumidores, hay que tener cuidado con la experiencia de usuario final que se dará, pues puede que los usuarios extrañen las características propias de su plataforma preferida.

Para mayor información, les recomiendo este post de Sorey.