Introducción a las aplicaciones móviles conectadas con Azure Mobile Apps (traducido)

¿Eres nuevo en Azure? ¿Necesitas un backend para tu aplicación móvil? Aquí hay algunas consideraciones clave y consejos para comenzar a desarrollar aplicaciones para móviles con Azure Mobile Apps.

En un mundo de dispositivos conectados a dispositivos móviles, uno de los componentes principales de la aplicación es el backend, que proporciona seguridad, disponibilidad y escalabilidad de acuerdo con sus necesidades, audiencia y/o capacidades de almacenamiento. En lugar de hacerlo todo en el dispositivo del usuario, tu aplicación puede optar por confiar ciertas responsabilidades como procesos de negocio complejos y tareas que consumen mucho tiempo sin comprometer la seguridad del usuario y la memoria del dispositivo.

Conoce Azure Mobile Apps:

Azure Mobile Apps es un conjunto de servicios en la nube que le permite construir y ejecutar rápidamente backends móviles mediante REST y OData a través de un conjunto de SDKs para conectar diferentes tipos de aplicaciones desarrolladas en plataformas y lenguajes de programacion tales como JavaScript, C#, Objective-C, Swift, Cordova y otros mas, de manera que ofrece un amplio abanico de desarrollo en las plataformas web, híbridas y nativo.

Azure Apps

Esto es extremadamente importante para las organizaciones que se mueven de entornos on-premises a servicios en la nube y nuevas oportunidades de aplicaciones que requieren soluciones en la nube altamente disponibles y funcionalidades móviles comunes, entre ellas:

Aplicaciones conectadas y sincronización fuera de línea.

Manejar situaciones de dispositivos sin acceso temporal a internet es una característica importante para evitar que tus aplicaciones dejen de funcionar y se vuelvan inútiles para tus usuarios cuando el dispositivo esté desconectado. Aún mejor, un backend poderoso le permite a las aplicaciones ser conscientes de la pérdida de conectividad y sincronizar con su backend cuando la conexión está de vuelta.

Existen varios productos de la nube que apoyan esta característica incluyendo Mobile de CouchBase, Google Firebase, Amazon Cognito y Azure también mediante Mobile Apps, con lo que puedes puede aprovechar las características anteriores y obtener:

Nota:
Azure Mobile Apps era anteriormente conocida como Azure Mobile Services, el cual ha cambiado de nombre de estos días para la transición a Azure App Service. Si ya has utilizado Azure Mobile Services, te recomiendo checkear las notas de transición aquí.

Comenzando con Azure mobile Apps.

Con Azure Mobile Apps puedes crear backends en 2 formas:

Por acá los pasos para empezar a usar Easy Tables y configurar fácilmente un backend móvil en minutos:

1. Configura la aplicación para móviles desde el portal de Azure.

Desde Azure Portal puedes ir a New -> Web + Mobile -> Mobile App para comenzar a crear tu backend móvil y elegir la URL de Azure pública a utilizar desde tu aplicacion móvil:

1.setup

2. Definir tu esquema con Easy Tables.

Desde el portal Azure puedes configurar el esquema de tabla rápidamente y definir los campos a ser almacenados:

2.tableSchema

Por defecto, las APIs sin código se basan en su propia base de datos, que puedes intercambiar en cualquier otra persistencia SQL/NoSQL de tu elección compatible con Azure.

3. Utilizacion mediante REST .

Una vez configurado el backend, puedes utilizar tu herramienta de depuración REST favorita para probar tu API sin código y comenzar a usar los verbos GET, PUT, UPDATE y DELETE sobre el backend inmediatamente.

3.PostJSON

Asegúrate de incluir el encabezado ZUMO-API-VERSION con la versión correcta (2.0.0) a la herramienta de depuración REST de su elección (yo utilice Postman en este caso).

Tips para conectar el backend con tu aplicacion movil

  1. Incorporar el SDK adecuado segun la plataforma (Swift, Java, Cordova, Xamarin)
  2. Configura la instancia de cliente y mapear tus DTO (Data-Transfer Objects u objetos de transferencia de datos)
  3. ¡Comienza a usarlo!

- Incorporar el SDK adecuado segun la plataforma

package

- Configura la aplicacion cliente y mapear tus DTOs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
namespace YourNextMobileApp
{
using Microsoft.WindowsAzure.MobileServices;
using Newtonsoft.Json;

public class Contact
{
[JsonProperty]
public string Id { get; set; }

[JsonProperty]
public string Name { get; set; }

[JsonProperty]
public string Phone { get; set; }

[Version]
public string Version { get; set; }
}
}

- Tip: Puedes abstraer el uso de Azure Mobile Apps con tu propia interfaz ICloudService y utilizarlo a traves de tu aplicación.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public interface ICloudService
{
Repository<Contact> Contacts { get; }

void Initialize();
}

public class AzureCloudService : ICloudService
{
private IMobileServiceClient _client;

public Repository<Contact> Contacts { get; set; }


public void Initialize()
{
_client = new MobileServiceClient(APP.KEYS.BACKEND_URL);

Contacts = new Repository<Contact>(_client);
}
}

Al abstraer el uso de Azure se hace mas fácil simular y reducir dependencias del mismo en tu aplicacion.

- Ampliando el uso del Patron Repository

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
namespace YourNextMobileApp
{
using Microsoft.WindowsAzure.MobileServices;
using System.Collections.Generic;
using System.Threading.Tasks;
using System;


public class Repository<T>
where T : class
{
IMobileServiceClient _proxy;

protected IMobileServiceTable<T> Table { get; private set; }
protected Logger Logger { get; set; }


public Repository(IMobileServiceClient proxy)
{
_proxy = proxy;
Table = _proxy.GetTable<T>();

Logger = new Logger();
}

public async Task<IEnumerable<T>> Get()
{
var empty = new T[0];

try
{
return await Table.ToEnumerableAsync();
}
catch (Exception ex)
{
Logger.Trace(ex);
return empty;
}
}
}
}

Con esto puedes heredar hacia classes Repository para utilizar sus instancias a lo largo de tu aplicación y de una manera ordenada.

- Tip: Manteniendo tus apps respondiendo con llamadas async (asincronas)

1
2
3
4
5
6
7
8
9
10
11
12
private async void FetchAsync()
{
var result = await Repository.Get();

if (result.Any())
{
foreach (Contact singleItem in result)
{
_observable.Add(new ContactViewModel (singleItem));
}
}
}

- Demo: Obteniendo los datos (Android / Google Maps)

demo

Easy Tables vrs. Azure Mobile Apps - Cuando elegir?

Mientras las Easy Tables de Azure son rápidas y poderosas, el backend obtenido usualmente es una implementación NodeJS, la cual no debe preocuparte a menos que quieras extenderla utilizando JavaScript. Alternativamente, puedes proveer tu propio backend basado en C# utilizando el SDK respectivo y las herramientas de Azure para extender la implementación de tu API segun lo necesites.

Por aqui algunas consideraciones clave para elegir entre Azure Easy Tables y Azure Mobile Apps con un backend de .Net / NodeJS:

+ Los “Pros” de usar Easy Tables:

- Los “Contras” de usar Easy Tables:

Por otro lado, un backend de Azure Mobile App te permite traer capas de lógica adicionales que se pueden ampliar con su propio código de backend con mediante NodeJS / Asp.Net Core y hospedarlo de igual forma en Azure.

+ Los “Pros” de las implementaciones móviles con Azure:

- Los “Contras” de las implementaciones de Azure en backends móviles:

Recapitulando.

Hasta ahora, hemos explorado algunos de los aspectos básicos de la incorporación de Azure Mobile Services en su próxima aplicación móvil. Como vimos, puedes comenzar con Easy Tables en minutos como una forma de configurar un backend móvil directamente desde la puerta directamente desde Azure Portal y comenzar a usarlo mediante REST / OData directamente desde tu aplicación.

Además, hemos examinado algunos de los escenarios en los que podría necesitar o no su propio backend codificado, y algunas consideraciones clave antes de la transición de Easy Tables a un completo Azure Mobile Ap backend en caso que sea necesario.

Mediante el uso de uno u otro, puedes tomar ventaja de los Azure Mobile SDKs disponibles para su diferentes lenguajes de programación y empezarlos a utilizar de forma inmediata las carasterísticas que trae fuera de la caja para aplicaciones móviles, incluyendo sincronización fuera de línea e integración a redes sociales.

Ojalá estos consejos te ayuden a sacar ventaja de las características Azure y a decidirte por utilizar Azure para su próxima aplicación móvil o no.

Happy coding!

Recursos recomendados:

Xamarin - Mobile apps con .Net and Azure