domingo, 9 de septiembre de 2012

Windows Azure MOBILE SERVICES & Windows 8

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:

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)

Etiquetas: , ,


martes, 11 de octubre de 2011

SQL Azure DataSync Preview. Sincronizando… ¡Step by step!

Muy buenas,

Como sabéis durante esta semana estamos en el Pass Summit 2011, donde SQL es el protagonista y donde espero que salgan a relucir muchas de las novedades que estamos esperando y principalmente desde el área de Windows Azure, concretamente en este caso, SQL Azure.

Esta son los puntos a tratar sobre SQL Azure :

    1. A lap around Microsoft SQL Azure and a discussion of what’s new
    2. Building Offline Applications for Windows Phones and Other Devices using Sync Framework and SQL Azure
    3. Migrating & Authoring Applications to Microsoft SQL Azure
    4. Building Large Scale Database Solutions on SQL Azure
    5. Introducing SQL Azure Reporting Services
    6. Loading and Backing Up SQL Azure Databases
    7. SQL Azure Data Sync - Integrating On-Premises Data with the Cloud
    8. SQLCAT: SQL Azure Learning from Real-World Deployments
    9. SQLCAT: Administering SQL Azure and new challenges for DBAs

De momento SQL Azure Data Sync en su nueva y reciente versión Preview y su integración en el Portal de Azure.

En un post anterior ya comenté como se llevaba a cabo esta sincronización para la CTP 2. Ahora todo es más intuitivo y fácil gracias a los nuesvos Wizards paso a paso. Muy bien conseguidos, sin duda !!!  +10.

En primer lugar, lo que tenemos que hacer es generar una provisión, y para ello, bastará con hacer click en “Provisión”, acertar los terminos de uso, seleccionar una subscripción y esperar unos segundos.

image

A continuación ya estamos listo para comenzar el proceso de sincronización y seguir el Wizard, ¡a buen entendedor pocas palabras bastan!:

image

He aquí los los pasos para trabajar con esta nueva versión y generar un proceso completo de sincronización en este caso una sincronización BIDIRECCIONAL, entre una BBDD en SQL OnPremise y otra en SQL Azure:

image

image

image

image

A continuación descarga e Instala el “Client Sync Agent” (Herramienta de Configuración con SQL Server Local + Servicio Windows).

Introduce un nombre cualquiera a asignar al agente. También tendrás que obtener la Key para poder configurar el “Client Sync Agent”.image

Una vez instalado el cliente (necesitaras las credenciales de un usuario para hacer el logon del servicio Windows (Agente)), sigue estos otros pasos para configurar el agente:

  1. Introduce la key obtenida en el paso anterior haciendo click en el botón "Submit Agent Key Configuration".
  2. Introduce las credenciales del servidor local de SQL Server haciendo click en el botón “Register”.

image

Vuelve al portal. Ahora ya podrás tener acceso a la BBDD local desde el portal de Azure y podrás continuar con el proceso.

Una vez completados los pasos anteriores o si ya tenías configurado un agente puedes optar por uno de las siguientes opciones, dependiendo de si ya habías creado o no una sincronización.

Opción (1) - Por primera vez:

image

image

Opción (2):

image

Paso 3: Ahora a configurar la BBDD de Azure sobre la que queremos realizar el proceso de sincronización, para ello, esta debe existir previamente.

image

Paso 4: Indicar cada cuanto tiempo queremos que se ejecute la sincronización, si queremos o no habilitar el proceso de sincronización y la política de conflictos (que información prevalece ante un conflicto, la de SQL Azure (Hub) o SQL Server Local (Client)),

image

Paso 5: Editar el mapeo de sincronización, (eso sí, de momento para una sóla base de datos) e incluso establecer filtros en relación a valores de campos.

 image

Después de esto y para terminar, lo único que nos queda es “Deploy”.

image

Y aquí, el resultado del portal una vez la sincronización ya está esta en curso:

image

Una vez finalizado el proceso las BBDD, tanto la local como la SQL Azure, incluirán un mayor numero de objetos; tablas, procedimientos almacenados y tipos definidos por el usuario, todos ellos con el prefijo “DataSync.”

image

Proceso listo, modifiquemos donde modifiquemos, en SQL Server o en SQL Azure, la información se verá reflejada en ambos.

También he de decir, que la consulta de logs (Log Viewer) ha mejorado bastante con respecto a su predecesor, ahora permite búsquedas por filtros (Sync Group, Agent, Database, Log Type y Date range):

image

Nota: Si la sincronización en lugar de ser bidireccional, es entre BBDDs de Azure (“Sync between SQL Azure databases”), la instalación del Agente en local no es necesaria.

Ahora a esperar a ver que más nos van contando en el Pass Summit 2011 !!! .

Saludos
Juanlu, elGuerre

Etiquetas: , ,


domingo, 3 de abril de 2011

SQL Azure Data Sync. Sincronizando…

Tras este grato fin de semana y tras haber celebrado junto con alguno de vosotros el 10º Aniversario de Avanade, ¡FELIZ ANIVERSARIO! me encuentro con ánimo de escribir este Post, antes de que finlize. Además, hace ya un tiempo que recibí el código de activación de SQL Azure Data Sync y llevo con ganas de escribir el resultado de las pruebas desde hace ya un tiempo.

En primer lugar decir que SQL Azure Data Sync  lleva a cabo la sincronización de datos entre SQL Server (On-premisse) y SQL Azure, aquí, podemos encontra más información.

A continuación enumero los pasos para poner en marcha el componente y para comprobar su funcionamiento.

image

image

image

Aunque no son necesario crear las BBDD en SQL Azure con Datos he aprovechado para comentar el proceso de migración, Winking smile

Ahora a poner en marcha el proceso de sincronización de datos:

clip_image001

Una vez finalizado el proceso y comenzada la sincronización los datos estarán replicados tanto en SQL On-Premisse como en SQL Azure, y por ello, como comentaba antes no sería necesario la creación de datos en SQL Azure al crear la BBDD.

Tras dicho proceso, si consultamos las BBDD tanto On-Premisse com SQL Azure, veremos que se han generado nuevos objetos:

  1. Una nueva tabla por cada una de las existentes y con el sufijo “_dss_tracking”.
  2. Un “User-Defined Tables Types” por cada tabla de la BBDD.
  3. Once (11) nuevos procedimientos almacenados por cada tabla. Ej.: para la tabla “Categories”.

imageimageimage

Como siempre hay que encontrar alguna pega, el número de objetos de la BBDD puede verse incrementado enormemente si de por sí  nuestra BBDD tiene ya muchos.

Adicionalmente, la sincronización es un éxito, eligiendo el modod “Bi-Direccional”, modifiques donde modifiques los cambios son reflejados.

Habrá que seguir probando para encontrar algunas limitaciónes, ¡si es que las tiene! Open-mouthed smile

 

Hasta aquí una vez más, Azure sigue ofreciendo posibilidades y acercándonos más al verdadero mundo Cloud.

Saludos @Azureños
Juanlu

Etiquetas: , ,


domingo, 20 de marzo de 2011

Desplegando LightSwitch en Azure. Varios click y CERO Código.

 

Llegó el momento, y  tras haber podido instalar el SP1 de Visual Studio+ LightSwitch Beta 2 (¡Como ya comenté en un post anterior, no era posible!), he continuado mis pasos con LightSwitch y ahora, con una  sencilla, sencilla publicación en Azure.

He aquí los pasos para el deploy en Azure de una aplicación LigthSwitch + acceso a datos con SQL Azure.

image

image

image

image

image

image

image

image

image

image

image

image

image

image

image

Ahora podemos eliminar el contenido del container “lightswitch” de Azure Storage. ¡Que pena que lo lo haga el despliegue de forma automática!. Será para la “Release”.   Junto a este pequeño inconveniente, encuentro otro adicional, sólo existe un camino para el despligue. LightSwich lo controla todo, no es posible hacer despligues manuales a partir de los ficheros de despliegue. ¡Bueno si, en el momento que comience la publicación, abortamos y en la carpeta “Bin\Debug” encontraremos dichos ficheros! Open-mouthed smile.  Desde mi punto de vista y sólo es una idea, el equipo de Azure está pensando 100% en el “Zero Code”, Winking smile.

 

Saluods @LightSwitch/SAzure
Juanlu

Etiquetas: , ,


This page is powered by Blogger. Isn't yours?