Azure Mobile Services. Parte II de ?. Enlace con el servicio.

Una vez que hemos visto en el post anterior, que es, que nos ofrece y como podemos crear un servicio de Mobile Services, vamos a meternos manos a la obra y a empezar a tirar alguna línea de código que otra.

Lo primero que tenemos que hacer es descargarnos el cliente manejado de Mobile Services para poder operar con el servicio. Para obtener dicho cliente (o lo que es lo mismo, para obtener el SDK de acceso a Mobile Services) podemos ir a la sección de downloads dentro de la web de Windows Azure, concretamente en la url: http://www.windowsazure.com/es-es/downloads/, dentro de la sección de movilidad. Pero quizás la mejor forma es descargarlo a través de Nuget e incluirlo en nuestra solución. Para obtenerlo en Nuget, y encontrarlo de una forma mas fácil y directa, deberemos de buscar: “WindowsAzure.MobileServices”

Nuget

Nota: A través de todos los post de esta serie, intentare crear una aplicación tipo. Dicha aplicación se llamará MyListOfTask. Vamos la típica aplicación de ToDo, al que intentare darle alguna nota diferenciadora. Obviamente, como todos sabéis, lo mío es Windows Phone, por lo que ese será el sistema elegido. No descarto en algún momento hacer lo mismo al menos para Windows Store y para Web.

Una vez instalado, el punto inicial para acceder a nuestro servicio en Mobile Services es instanciar la clase MobileServiceClient, contenida en el namespace Microsoft.WindowsAzure.Mobile. Si hemos incluido Mobile Services a través de Nuget no es necesario, pero si no fuera así, si hubiéramos descargado el SDK por otro método, para poder hacer referencia al namespace Microsoft.WindowsAzure.Mobile deberemos de hacer referencia al ensamblado Microsoft.WindowsAzure.Mobile.dll

Definicion
  1. public MobileServiceClient(string applicationUrl, string applicationKey);

Esto lo podemos hacer de muchas formas, quizás la mas extendida y la mas común de ver en cualquier tipo de proyecto que nos podamos descargar de la red, es instanciar esta clase como una propiedad estática dentro del fichero App.xaml.cs en Windows Phone.

Como veis en la parte superior, para instanciar esa clase es necesario indicar por un lado la url de nuestro servicio (recordáis la dirección con terminación .azure-mobile.net, que hemos indicado al crear el servicio) y la clave de aplicación. La url es fácil de saber o de recordar, pero en nuestra sección del panel de control de Windows Azure perteneciente a nuestro servicio móvil podemos verla. Por otro lado la clave de aplicación, la podemos encontrar en el mismo lugar, en la parte inferior, tras pulsar el botón de “Administrar Claves”

Administer1

Una vez pulsado dicho botón, se nos muestran dos claves. Por un lado la clave de aplicación (la que nos interesa ahora mismo) y por otro lado la clave maestra (de la cual hablaremos en otro momento).

Administer2

Luego nuestra instancia de la clase MobileServiceClient quedaría de la siguiente forma:

MobileServiceClient
  1. public static MobileServiceClient MobileClient = new MobileServiceClient(
  2.     “https://mylistoftasks.azure-mobile.net/”,
  3.     “vgJviKzeFEdJZnn……………..”);

Como ya he comentado esta seria la forma de instanciar la clase necesaria para obtener un punto de entrada a nuestro servicio, o por llamarlo de otra forma, es la forma de crear un cliente de nuestro servicio móvil.

Simplemente con esto, ya tenemos nuestra aplicación enlazada. A partir de ahora deberemos de empezar a usar los servicios y las opciones que Mobile Services nos proporciona. Esto lo comenzare a realizar en las siguientes entradas de esta serie. Para realizarlo, me voy a apoyar en una “clase/servicio” a la que he denominado AzureMobileService. Con su correspondiente interface para usar inyección de dependencias, test unitarios y demás historias que iremos viendo con el tiempo.

Toda la estructura de la aplicación de ejemplo, esta montada en base a la utilización de MVVM, por lo que nuestro proyecto, en su punto embrionario quedaría de la siguiente forma.

Structure

Muchas cosas os pueden sonar raras en el proyecto si no estáis acostumbrados a trabajar con MVVM. No es este el cometido de esta serie de entradas, pero aprovechare para dar un buen repaso a la forma de trabajar con este patrón de diseño.

Nota: Dentro de nuestro proyecto disponemos de una “clase/servicio” para manejar nuestro dispatcher de forma mas cómoda. Se usa la inyección de dependencias a través de AutoFac, y alguna cosilla mas que quizás se me escape.

Nota 2: Si tenemos la intención de crear dos aplicaciones, una para Windows Store y otra para Windows Phone, y queremos crear el mayor numero de código común para ambas plataformas, lo suyo seria apoyarnos en una Portable Class Library. Desde el mes de marzo de este mismo año (si ahora mismo la memoria no me falla), es posible crear y manejar Azure Mobile Services a través de una PCL. El único problema que tenemos es que existen determinadas operaciones que no es posible realizarlas en la PCL y tendríamos que extenderla en cada uno de nuestros proyectos para realizarlo en Windows Store o en Windows Phone directamente. Esa es la razón por la que de momento no lo voy a crear, ya que complicaría la explicación

Seguido de estas líneas, podéis encontrar el enlace para descargaros el código fuente correspondiente a este segundo capitulo de la serie.

Skydrive Folder

Nos vemos!!

Azure Mobile Services. Parte I de ?. Introducción

Con esta entrada voy a comenzar una serie de post relacionados con Azure Mobile Services. Seguramente que todos vosotros conozcáis ya que es Windows Azure, y seguramente que también le halláis incado el diente a su pata de servicios móviles. Pero si que es cierto que existe mucha gente que desconoce por completo que es y que nos ofrece de una forma bastante sencilla Windows Azure Mobile Services.

¿Que es?

Para comenzar deberemos de decir que Windows Azure Mobile Services (a partir de ahora Mobile Services), es una parte del gran sistema de Windows Azure. Podríamos decir que Mobile Services es una especie (o sin especiar) de Backend as a Service. Es mas, en la infografía que os presento a continuación, realizada por Kinvey, aparece en dicha pata.

kinvey_backend-as-a-service_mobileecosystem_jan-18-2013_2100px

Existen en el mercado muchas alternativas que nos proporcionan lo mismo que hace Mobile Services. Por ejemplo Buddy, al que todos los que por disponer de una subscripción al desaparecido Nokia Premium Developer Program, podíais tener acceso, ya que se proporcionaban una serie de llamadas (creo recordar que unos cuantos millones de ellas) de forma totalmente gratuita. Pero bueno, unas ofertas nos pueden proporcionar una serie de cosas que otras no nos den, pero como somos desarrolladores .Net, quizás nuestra primera tendencia al menos para probarlo debería de ser Mobile Service.

¿Que nos ofrece?

Mobile Service, nos proporciona:

* Autenticación: Podremos configurar y usar de forma muy simple, la autenticación en al menos 4 sistemas de uso común. Facebook, Twitter, Google y Windows Live.

* Datos: Disponemos de una forma fácil de aprovisionar nuestro almacenamiento relacional en una base de datos de SQL Azure.

* Notificaciones: Sistema de envío de notificaciones a los principales servicios, entre los que se encuentran los de Windows (WNS) y Windows Phone (MPNS), Google (GCM) y Apple (APNS).

* Lógica en servidor: A través de scripts podremos generar lógica en el servidor que sea ejecutada al realizar operaciones en nuestros datos, bajo demanda, en periodos controlados, etc.…

* Apis de terceros: Podremos usar en nuestros scripts de servidor, Apis de terceros para realizar ciertas operaciones. Acceder a otras patas de Windows Azure y extender nuestro código.

* Supervisión, alertas y registro: Desde el portal de gestión podremos visualizar el estado de cualquiera de nuestros servicios. Podremos registrar cualquier aviso, o error que se genere en nuestros scripts de servidor y así mismo podremos de forma fácil comprobar la disponibilidad de cualquiera de nuestros servicios.

* Escalado: Cualquier servicio podrá escalar de forma vertical y horizontal de forma automática, siguiendo una serie de reglas prefijadas.

details

¿Desde que sistemas podemos acceder a este servicio?

Mobile Services es compatible y dispone de soporte nativo para aplicaciones Windows Store, Windows Phone, iOS, Android y HTML5 a través de JavaScript. También disponemos de una API REST con lo que cualquier tipo de sistema que sea capaz de enviar y recibir mensajes HTTP podría usar Mobile Services.

Recientemente se ha incorporado Xamarin como plataforma nativa, con la que poder usar Mobile Service.

plataforms

¿Cuanto cuesta?

Mobile Services dispone de 3 niveles de servicio. Gratuito, Básico y Estándar. Cada uno de ellos se diferencia obviamente por el coste y por el numero de servicios o llamadas a la Api de Mobile Services que incorporan. En la siguiente imagen podemos ver un resumen de cada uno de ellos.

Price

Podemos ver que disponemos de 10 servicios de forma totalmente gratuita. Los dos niveles siguientes nos muestran el precio por servicio, ojo, no por los 10 servicios. Repito es el precio mensual por cada servicio de forma independiente, ya tengamos 1 o 100.

El servicio o nivel gratuito es muy interesante, ya que sin pagar un solo euro dispondremos de hasta 10 servicios, con una posibilidad de acceso bastante importante al menos para el inicio de cualquier tipo de aplicación.

Como podéis ver aunque dispongamos de varios niveles de precios, en lo que se refiere al almacenamiento debemos de contratarlo por separado. Podemos decir que disponemos de una base de datos con un espacio muy limitado en cualquiera de ellas y que para ampliarlo debemos de contratar cualquiera de las opciones que la plataforma Windows Azure nos ofrece para su servicio de SQL Azure. A continuación os muestro una tabla con los precios de dicho servicio.

Price2

Nota: Hasta hace 4 días los niveles se denominaban Gratuito, Estándar y Premium, cambiar los nombres, pasando a ser el nivel Premium, Estándar, me hace pensar que no tardando aparecerá un nuevo nivel Premium con otras opciones y precio. Pero eso solo es pura especulación mía.

Nota 2: Para poder usar Mobile Services, es necesario disponer de una subscripción general a Windows Azure. Dicha subscripción no es gratuita (fuera de su oferta trial), pero en esencia lo es, si no usamos ningún servicio de pago de dicha plataforma. Es decir disponer del nivel gratuito de Mobile Service es 100% gratuito si no usamos otro servicio de Windows Azure.

¿Como empiezo a usarlo?

Para poder usar, configurar y gestionar Mobile Services, deberemos de disponer, como he comentado anteriormente de una subscripción a Windows Azure. Si no disponemos de una podremos crearla y beneficiarnos de su versión de evaluación gratuita de un mes, en la que dispondremos de 150€ gratuitos, para poder consumir en cualquiera de los servicios que nos ofrece.

Detail1

Dentro de la consola de administración de Windows Azure disponemos de la sección de Mobile Services, tal y como vemos en la imagen de la izquierda. Para crear un nuevo servicio, simplemente deberemos de hacerlo desde la opción de la parte inferior de nuestra consola de administración.

Detail2

Y a continuación indicar que deseamos crear un servicio móvil.

Detail3

Lo primero que deberemos de indicar es la dirección url del servicio a crear. Esta dirección será generada con la terminación .azure-mobile.net. En nuestro caso vamos a crear un servicio cuya url completa seria: http://shaken.azure-mobile.net. También indicaremos que base de datos vamos a usar, si una base de datos creada anteriormente, o por el contrario vamos a crear una nueva base datos, entre las que podemos escoger si dicha nueva base de datos será la base de datos de 20Mb gratuita que se incluye con Mobile Services o una nueva base de datos normal de SQL Azure.

Por ultimo indicaremos en que región se va a ubicar nuestro servicio, dentro de las que Windows Azure tiene montados sus datacenters. Ojo con este dato, ya que dependiendo desde donde vamos a acceder a nuestro servicio ubicar este en una región u otra puede llegar a ser muy importante, debido a la latencia en la resolución y la devolución de datos si el servicio esta en una región y el acceso se realice desde el otro extremo del planeta.

Detail4

En el caso de que escojamos usar una base de datos existente, se nos solicitara introducir los datos de inicio de sesión de la misma. Si por el contrario creamos una nueva base de datos, sea la opción de esta la que sea, se nos solicitara que indiquemos todos los datos de dicha base de datos, como su servidor, los datos de inicio de sesión en dicha base de datos y la ubicación del servidor que la contendrá.

Detail6

Una vez rellenados y completados todos estos sencillos pasos y tras unos prudenciales segundos, ya dispondremos de nuestro servicio completamente operativo para poder usarlo a nuestro antojo.

Detai7

Lo primero que deberíamos de hacer si es la primera vez que nos enfrentamos con Mobile Services es seguir los primeros pasos que se nos muestran en la primera sección de nuestro servicio. En dicha sección podremos descargar y probar de forma totalmente operativa una solución para cualquiera de las plataformas nativas con las que podemos trabajar, las cuales he citado anteriormente.

Detail8

De forma sencilla se nos muestran los pasos a seguir para poder descargar dicha solución y crear en nuestro servicio una tabla de datos con la que poder interactuar. Así como las instrucciones que debemos de seguir para conectar una aplicación ya generada previamente con este servicio recién creado.

Detail9

En los siguientes post, hablare de forma extensa, de cada una de las funcionalidades que nos da Mobile Services. Para finalizar os muestro una infografía realizada por Microsoft que resume que es y que nos aporta Windows Azure Mobile Services. Dicha infografía la podéis encontrar aquí.

Nos vemos!!

poster