Otra de las tecnologías con la que llevo trabajando desde el año pasado es Azure Mobile Services. Al principio pensaba que sólo se trataba de un servicio de back-end, donde poder almacenar los datos procedentes de dispositivos móviles, pero en realidad va mucho más allá y es lo que me gustaría contarte para empezar la semana.
Si estás acostumbrado a trabajar con la plataforma Microsoft Azure, ya te habrás dado cuenta de que muchos de los servicios se apoyan entre ellos. Por ejemplo, Azure Media Services utiliza Azure Storage para almacenar los assets, Notification Hubs utiliza Azure Service Bus para el envío de notificaciones, etcétera. En el caso de Azure Mobile Services se trata de un servicio enlazado a todos aquellos que facilitan: el hosting para las Apis (sobre Azure Websites), el almacenamiento de datos (por defecto Azure SQL Database), notificaciones a los usuarios (Azure Notification Hubs) y el manejo de identidades (Access Control). Inicialmente apareció con Node.js como backend, pero desde hace algunos meses ya podemos trabajar con .NET, apoyándonos en ASP.NET Web Api para la creación de las Apis.
Cómo empezar
Si eres desarrollador .NET, la forma más sencilla de comenzar a trabajar con el servicio es a través de Visual Studio. Cuando seleccionamos la opción New project… dentro del apartado Cloud tenemos un tipo de proyecto llamado Azure Mobile Service.

Una vez elegido un nombre y una ubicación, aparecerá una nueva ventana donde se selecciona por defecto la opción de ASP.NET Web Api, pero además también nos permite enlazar el nuevo proyecto con un servicio Mobile Services en la cuenta de Microsoft Azure que tengamos asociada al IDE.

Si dejamos seleccionado ese checkbox, de manera automática se nos pedirán los datos para la nueva cuenta.

Mientras que en segundo plano se está aprovisionando la cuenta en el cloud, podemos comprobar en la ventana Solution Explorer la típica estructura de una aplicación ASP.NET Web Api con código de ejemplo.

- TodoItemController: tu primer controlador que trabaja para Mobile Services. En él existen algunas diferencias a las que no estamos acostumbrados. En primer lugar, esta clase no hereda de ApiController sino de TableController<>, donde se especifica la entidad sobre la cual opera. Esta clase base es propia de Azure Mobile Services, la cual nos da un conjunto de operaciones estándar sobre el almacenamiento de datos elegido y la clase DomainManager la cual se utiliza para inyectar cuál es la fuente de datos sobre la que queremos trabajar (por defecto utiliza EntityFramework sobre Azure SQL Database).
- TodoItem: en el ejemplo de prueba se trata de la clase sobre la cual está basada el controlador anterior. Hereda de EntityData ya que se utiliza EntityFramework para acceder a la base de datos.
- Microsoft.ServiceBus.MessagingPerformanceCounters.man: de forma predeterminada se generan una serie de contadores para la parte de Notification Hubs que pueden sernos de utilidad, como el número de mensajes enviados con éxito y sin él, la latencia en el envío, etcétera.
- SampleJob: Al ser un servicio que está apoyado sobre Azure Websites, podemos hacer uso de WebJobs.
- Clase estática Services: Para poder hacer uso de todos los servicios que se enlazan entre sí, tenemos una clase estática llamada Services la cual nos permite registrar eventos, lanzar notificaciones, etcétera.
Podemos ejecutar el proyecto en local y obtendremos una pantalla como la siguiente:

Si hacemos clic sobre try it out veremos los métodos expuestos en la clase TodoItemController e incluso el job de prueba, sin necesidad de crear un cliente que los invoque. No obstante, podemos utilizar cualquier programa como Fiddler, Postman, Paw, entre otros.

Después de haber realizado las pruebas que creamos necesarias, el último paso es publicar. Para ello, basta con volver a Visual Studio y seleccionar la opción Publish… sobre el proyecto.

Al haber enlazado el mismo con una cuenta de Azure Mobile Services en el primer paso, la configuración estará completada desde el primer momento, por lo que sólo tenemos que hacer clic en el botón de Publish para realizar la subida. Cuando finalice se lanzará el navegador con la misma página que vimos en el paso anterior, aunque en este caso se nos pedirán credenciales si queremos acceder a la página de pruebas. Las credenciales son el nombre de usuario en blanco y como contraseña la APPLICATION KEY, para la cual debemos acceder al portal, seleccionar la cuenta del servicio y hacer clic sobre el botón MANAGE KEYS.
Con este post ya tendrás una noción básica sobre cómo comenzar con Mobile Services.
¡Saludos!