Share this post
  

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 Mobile 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:

  • Push notifications
  • Disponibilidad fuera de línea
  • Integración a redes sociales
  • Sincronización fuera de línea
  • Autenticación. Y más.

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:

  • Sistemas basados en JavaScript / .Net de punta a punta.
  • Backends altamente extensibles con Asp.Net Core / NodeJS y sus más recientes características.
  • Integraciones corporativas Sign-On y Active-Directory.
  • Extensibilidad local hacia la nube.
  • Entre otros.

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:

  • Easy Tables (APIs sin codificación)
  • Backends completos de Azure Mobile Apps (NodeJS/.Net)

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:

The 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:

The table schema

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.

The 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

The package

- Configura la aplicacion cliente y mapear tus DTOs

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.

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

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)

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:

  • Se basan en la nube de Azure con mínima configuración y codificación.
  • Backends rápidos en marcha en cuestion de minutos.
  • Rapidamente puedes salta a codificar con el SDK y obtener mas funcionalidades en tu lenguaje de programacion favorito.
  • Recomendado para scenarios App-first para enfocarte en el producto primero con dependencias minimas.

- Los “Contras” de usar Easy Tables:

  • Poca o nula codificación y lógica mínima personalizable.
  • Podria hacer tu aplicacion con alto procesamiento del lado del cliente.
  • Relaciones entre los objetos no pueden (ni deberían) ser manejadas con Easy Tables.
  • Si necesitas operaciones extra o personalizar la logica podran requerir ajustes en el backend NodeJS (JavaScript).

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:

  • Permite construir tu propio backend con todo el poder de la nube de Azure.
  • Soporta las últimas características de Asp.Net Core / NodeJS fuera de la caja.
  • Servicios integrados y extensibles en la nube.

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

  • Algunas funcionalidades de los SDKs estan sujetas a codificacion o cambios segun la version de los SDKs (breaking changes)
  • Pueden requerir un entendimiento más profundo de los componentes de Azure.

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

Share this post
  


@stvansolano
More about me