mobile-service

Muy buenas,

Hoy, me disponía a ver el funcionamiento de la reciente nueva característica de Windows Azure (“MOBILE SERVICES”) y sinceramente, ha sido bastante fácil e intuitivo entender todo lo que a ello respecta. ¡La verdad es que los tutoriales que ha preparado Microsoft son geniales además de sencillos!. Podemos encontralos aquí, en “Get Started With Mobile Services”. 

Scott Guthrie también ha escrito un post al respecto, así, que la intención de este post será profundizar un poco más e indagar en algunos otros detalles.

Veamos a continuación como funciona todo esto:

1. Habilitar esta característica. Para ello seguiremos estos pasos.

2. Accedemos al nuevo portal de Windows Azure.

3. Seguimos los pasos del tutorial de Microsoft: “Get Started With Mobile Services” donde:

  • El primer paso es Instalar el SDK para Mobile Services además de tener instalado Visual Studio
  • El segundo es Crear una aplicación nueva o conectarse a una ya existente.

4. Finalizado el tutorial y, sin esfuerzo alguno, tendremos una aplicación Windows 8 conectada a Windows Azure.

Nota: Pero, ¿Cómo funciona todo por “debajo”? Pues bien, veamos los dos aspectos más importantes:

a. Conexión con  el servicio. En la clase “App.xaml.cs”, encontraremos como crear dicha conexión con Mobile Services:

   1: public static MobileServiceClient MobileService = new MobileServiceClient(

   2:     "https://myfirstmobileservice.azure-mobile.net/",

   3:     "rbLHUGEnPzdeaXvftueqBnJyMXRuiD76"

   4: );

Donde:

  • La línea 2 es la dirección (URL) bajo la que se encuentra alojado el servicio en Windows Azure y que coincide, con el nombre que hemos introducido al crear nuestro nuevo Mobile Services “myfirstmobileservice”. El sufijo, “.azure-mobile.net” será el mismo para todos nuestros mobile services.
  • La linea 3, es nuestra “Application Key”, es decir, la clave que necesitamos para poder establecer la conexión con el servicio.  La podemos obtener o cambiar siguiendo estos dos simples pasos:

imageimage

Nota: En caso de que esta key no se corresponda la que hemos indicado en el código , obtendremos un error: “Unauthorized  (401 Unauthorized – Details: {"code":401,"error":"Unauthorized"})”.

b. Conexión con la BBDD: En el ejemplo y concretamente en el paso 2 del tutorial, podemos crear una tabla de ejemplo (“Create TodoItem Table”). Sin embargo, para profundizar más, veamos como cambiar la misma y añadir un par de campos nuevos: “StartDate” y “DueDate” para así poner en calendario nuestras tareas.

Lo primero es modificar la tabla “TodoItem”. Pero para esta acción, necesitaremos acceder a la misma, (a SQL Azure), a través del portal de SQL Azure, o bien, a través de la conexión desde Management Studio, o mejor aún, a través del Server Explorer de Visual Studio 2012, que ahora permite la edición de las tablas de SQL Azure en modo diseño:

image image

En mi caso, y para este ejemplo, opté por crear la tabla “TodoItem”  en mi BBDD “Northwind” que ya tengo creada en SQL Azure.

A continuación, lo siguiente es cambiar nuestro “Model”  C#, para incluir estas dos nuevas propiedades. Para el ejemplo en cuestión,  nuestro modelo se encuentra en la clase “MainPage.xaml.cs”:

   1: public class TodoItem

   2: {

   3:     public int Id { get; set; }

   4:  

   5:     [DataMember(Name = "text")]

   6:     public string Text { get; set; }

   7:  

   8:     [DataMember(Name = "complete")]

   9:     public bool Complete { get; set; }

  10:  

  11:     [DataMember(Name ="StartDate")]

  12:     public DateTime StartDate {get; set;}

  13:         

  14:     [DataMember(Name = "DueDate")]

  15:     public DateTime DueDate {get; set;}

  16: }

 

Nota: Recordemos que los nombres de los campos de la tabla deben coincidir con estas propiedades o con los indicados en la propiedad Name de “DataMember”. Recordad tambien que estos valores son “key sensitive”.

Por ultimo, sólo tenemos que añadir la introducción de estos dos nuevos valores en el código, al hacer el guardado. Podríamos haber incluido dos “DatePicker” para ambas fechas, pero para el ejemplo, bastará con verlo en el código:

   1: private void ButtonSave_Click(object sender, RoutedEventArgs e)

   2: {

   3:     var todoItem = new TodoItem { Text = TextInput.Text, StartDate = DateTime.Now,  DueDate = DateTime.Now.AddDays(1) };

   4:     InsertTodoItem(todoItem);

   5: }

Como vemos, simplemente se trata de pasar estos dos nuevos parámetros al insertar la nueva tarea. Ahora incluimos en la vista dos nuevos TextBlock en el “DataTemplate” del “ListView” y listo:

   1: <ListView Name="ListItems" Margin="62,10,0,0" Grid.Row="1">

   2:     <ListView.ItemTemplate>

   3:         <DataTemplate>

   4:             <StackPanel Orientation="Horizontal">

   5:                 <CheckBox Name="CheckBoxComplete" IsChecked="{Binding Complete, Mode=TwoWay}" Checked="CheckBoxComplete_Checked" Content="{Binding Text}" Margin="10,5" VerticalAlignment="Center"/>

   6:                 <TextBlock Name="StartDate" Text="{Binding StartDate}" Margin="10,5" />                                                                    

   7:                 <TextBlock Name="DueDate" Text="{Binding DueDate}" Margin="10,5" />

   8:             </StackPanel>

   9:         </DataTemplate>

  10:     </ListView.ItemTemplate>

  11: </ListView>

Ejecutamos y ya tenemos nuestra aplicación Windows 8 conectada a Azure y con nuestros cambios realizados en la base de datos (BBDD) SQL Azure.

image

c. Adicionalmente existen otros dos puntos a tener en cuenta y que también son incluidos en los tutoriales:

Authenticación: Para lo que tendremos que descargarnos el SDK de Live para Windows.

Notificaciones Push: Permitirá a nuestra aplicación Windows 8 recibir notificaciones. En el caso del ejemplo, tras cada inserción. Para llevar a cabo esta tarea necesitaremos la actualización de los scripts (JavaScript) de nuestros servicios. Esto podremos hacerlo accediendo a la pestaña “Data” y, a continuación, y tras seleccionar una tabla, “TodoItem” para nuestro ejemplo, seleccionando la pestaña “Script”.  Para más detalle de estos scripts podemos echar un vistazo a: Mobile Services scripting.  Adicionalmente y gracias a “Mobile Services Scripting”, podremos realizar validaciones en servidor.

Espero haber aclarado un poco más lo fácil que es disponer de una aplicación Windows 8 conectada con Windows Azure gracias a “MOBILE SERVICES”.  Y, ahora que todos estamos tan contentos haciendo nuestros pinitos con Windows 8, no hay impedimentos para no tener nuestros datos en la nube, Guiño.

Este es el primer paso desde “Mobile Services” para hacernos tan fácil nuestro trabajo, pero, hay más por venir: Integración con Windows Azure Storage, Servicios Rest, etc. En este punto surgen algunas dudas como, ¿Tendremos integración de Mobile Services para iPone/iPad, Android, etc? ¡Habrá que esperar!

Saludos @Home

Juanlu, ElGuerre (@JuanluElGuerre)