Cómo crear Apps para Windows Phone, Windows 8, IOS y Android con Visual Studio y Windows Azure

(by @JuanKRuiz )

El mercado de Apps es un mercado de oportunidades, es la democratización de la industria del software, y no es el futuro, una promesa, es una realidad del presente.

Cuando creamos un producto, queremos que este sea exitoso,  nos encontramos con un dilema acerca de las plataformas que queremos soportar versus el costo de producción que esto puede implicar.

Esto es un problema, debido a la forma en que cada plataforma construye sus aplicaciones a veces es inevitable terminar creando tres veces la misma aplicación.

imageExisten alternativas para solucionar este inconveniente, una de ellas es Phonegap la cual nos permiten crear fácilmente aplicaciones con javascript, css y HTML. Es una alternativa importante y conveniente en muchos escenarios, pero no en todos.

Cuando nuestra aplicación requiere un trabajo más elaborado a nivel de UI la aproximación de Phonegap nos empieza a quedar corta. Cada plataforma tiene características y funcionalidades muy puntuales que con un núcleo común y una interfaz gráfica unificada no logramos cubrir.

Otro aspecto a tener en cuenta es el tema de la segregación de responsabilidades, el despliegue de nuevas versiones y la escalabilidad de los servicios que consume nuestra aplicación, un backend creado de manera tradicional funciona, sin lugar a dudas, pero esta lejos de ser la mejor opción pues no es muy escalable y adicionalmente siempre tendrás que hacer desarrollo desde los diferentes clientes (las Apps) para consumir los servicios provistos por el backend.

 

Aquí es donde aparece la magia.

Mobile Services, backend en la nube

 

imageLo primero que debemos comenzar a pensar es que en el mundo de la movilidad nuestra aplicación puede y debe utilizar servicios en la nube, es la forma más sencilla de tener un core de negocio único y escalable expuesto a través de interfaces desacopladas como lo son los servicios expuestos por REST, o cualquier otra forma similar de web services,

Si, la nube es una solución para buena parte del trabajo de backend, pero  aún seguimos desarrollando varios clientes para consumir dicho backend.

imageAquí es donde la magia entra en juego y esa magia tiene nombre propio Windows Azure Mobile Services, una funcionalidad de Windows Azure que nos permite olvidarnos de la complejidad de la base de datos y de las características puntuales de cada plataforma de desarrollo para enfocarnos en nuestros datos y nada más.

Con Mobile Services puedes crear un backend en cuestión de minutos y permitir que este se extienda o modifique dinámicamente de acuerdo a como manipules tus objetos en la aplicación cliente, toda la funcionalidad esta expuesta haciendo uso de REST pero tu no debes programarlo, ni tampoco debes preocuparte por la conexión a la base de datos ni por construir las tablas.

Por si fuera poco (ya que de por si nos hace más de la mitad del trabajo) . Mobile Services ya tiene un SDK para iOS (beta) , Android (beta) , Windows 8 y Windows Phone, qué quiere decir esto?

Quiere decir que ya tienes componentes hechos para consumirlo y que se programa prácticamente igual en cualquiera de las plataformas sin necesidad de repensar tú código, resultado: un solo backend, múltiples plataformas y en un abrir y cerrar de ojos.

 

C# en cualquier plataforma

Para crear la aplicación cliente requieres definir entidades, librerías, helpers y un sinfín de objetos necesarios para que el software funcione. En cada plataforma debes implementarlos siguiendo la sintaxis y gramática de cada lenguaje, accediendo a clases especificas de cada framework. Un trabajo interesante e incluso apasionante pero que definitivamente requiere de una inversión de tiempo considerable.

Que bueno sería tener la opción de escribir en el mismo lenguaje para las tres plataformas, y porque no poder acceder a varias de las librerías que el CLR nos ofrece.

Esto era una utopía, desarrollar para sistemas iOS, por ejemplo, implica no hacer uso de lenguajes interpretados,  que requieran algún tipo de middleware o runtime para que el sistema permita su ejecución, eso descarta inmediatamente lenguajes como Flash y tristemente lenguajes que se ejecuten sobre un JVM o sobre un CLR como el de .NET.

La industria esta llena de genios, algunos de ellos hacen historia. Miguel de Icaza un desarrollador Mexicano famoso por la creación del proyecto Gnome, el proyecto de Mono y un sinfín de herramientas más se dio cuenta del poder que el CLR y C# pueden dar a los desarrolladores de Apps para dispositivos móviles y ante la restricción de las plataformas decidió modificar el compilador de Mono para que no generara código intermedio (IL) sino que generara código nativo de una vez, el resultado dos productos que desde ya se posicionan como una opción poderosa para desarrollar Apps:

 

Xamarin.iOS (Monotouch)

Xamarin.Android (Monodroid)

 

Lo mejor de todo es que existe una versión gratuita que incluye como editor Mono Develop y a partir de la versión Bussiness son 100% compatibles y utilizables desde Visual Studio 2012.

 

Manos a la Obra

Estoy seguro que si tenias ideas acerca de como crear Apps multiplataforma con este artículo ya has visto la luz, Microsoft promueve y apoya 100% los sistemas interoperables, pues la realidad del mercado es que hay muchas opciones pera muchos gustos y necesidades.

Microsoft como creador de C# y del CLR promueve la adopción de estas tecnologías en diferentes plataformas y por medio de una plataforma en la nube de capacidades inimaginables como Windows Azure Te permite y allana el camino para tener el backend ideal sin importar las plataformas en que quieras implementar tu aplicación.