domingo, 9 de septiembre de 2012
Windows Azure MOBILE SERVICES & Windows 8
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:
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:
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 TodoItem2: {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.
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, .
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: SQL Azure, Windows 8, Windows Azure
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 :
- A lap around Microsoft SQL Azure and a discussion of what’s new
- Building Offline Applications for Windows Phones and Other Devices using Sync Framework and SQL Azure
- Migrating & Authoring Applications to Microsoft SQL Azure
- Building Large Scale Database Solutions on SQL Azure
- Introducing SQL Azure Reporting Services
- Loading and Backing Up SQL Azure Databases
- SQL Azure Data Sync - Integrating On-Premises Data with the Cloud
- SQLCAT: SQL Azure Learning from Real-World Deployments
- 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.
A continuación ya estamos listo para comenzar el proceso de sincronización y seguir el Wizard, ¡a buen entendedor pocas palabras bastan!:
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:
- Indicar un nombre para el grupo de sincronización, ej.: “Sync 1”
- Añadir al proceso una BBDD SQL local
- La primera vez que ejecutes este paso (2) necesitarás instalar en local el software “Client Sync Agent”, de manera que este permitirá al Portal de Azure configurar las sincronizaciones conociendo así las conexiones SQL Server locales. Para completar este paso por primera vez sigue estas indicaciones:
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”.
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:
- Introduce la key obtenida en el paso anterior haciendo click en el botón "Submit Agent Key Configuration".
- Introduce las credenciales del servidor local de SQL Server haciendo click en el botón “Register”.
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:
Opción (2):
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.
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)),
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.
Después de esto y para terminar, lo único que nos queda es “Deploy”.
Y aquí, el resultado del portal una vez la sincronización ya está esta en curso:
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.”
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):
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: SQL Azure, SQL Azure DataSync, Windows Azure
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.
- Haciendo uso del Portal de Azure, crear un Base de Datos en SQL Azure utilizando la opción “create” una vez seleccionado el servidor.
- Introducir el nombre de la Base de Datos “NorthWind”.
- Partir de la BBDD local por todos conocida “NorthWind” y optar por una de las dos opciones para crearla en SQL AZure.
- Haciendo uso de la herramienta de exportación de Scripts de SQL Server 2008 “Generate Scripts…” (Seleccionar en este caso). En este caso ten en cuenta dos propiedades ”avanzadas” importantes: “Script for the database engine Type” y “Types of data to scripts” (Para este caso no es importante, pero será necesario tenerlo en cuenta a la hora de crear BBDD con datos). Una vez generado el Script crear una coneción con el servidor de SQL Azure para la BBDD creada durante los pasos anteriores, y ejecutar este scripts.
- Haciendo uso de la herramienta SQL Azure Migration Wizard (“SQL Azure MW v3.5.7”), partiendo en este caso desde la BBDD local o incluso desde el fichero de Script SQL referente a la misma. En este caso, la herramienta hará todo el trabajo una vez indicado el origen y destino.
Aunque no son necesario crear las BBDD en SQL Azure con Datos he aprovechado para comentar el proceso de migración,
Ahora a poner en marcha el proceso de sincronización de datos:
- Acceder al portal de SQL Azure Data Sync “https://datasync.azure.com/SADataSync.aspx”
- En la pestaña “Agents”
- Genera una key para el agente introduciendo un nombre.
- Descarga el servicio, “AgentServiceSetup.msi” e instalalo en local para la sincronización.
- Configura el Servicio indicando entre la key generada en el paso anterior y añadiendo la BBDD local de la que quieres realizar la sincronización.
- A partir de aquí, pensaba seguir comentando uno a uno todos los pasos, pero, ¿Para que hacerlo si tenemos un buen articulo en la TechNet, bastante mejor que el que pueda completar yo? En este tambien se explica los pasos necesarios para el registro para la obtención del código de activación.
- http://social.technet.microsoft.com/wiki/contents/articles/sql-azure-data-sync-scenario-sql-server-to-sql-azure-synchronization.aspx
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:
- Una nueva tabla por cada una de las existentes y con el sufijo “_dss_tracking”.
- Un “User-Defined Tables Types” por cada tabla de la BBDD.
- Once (11) nuevos procedimientos almacenados por cada tabla. Ej.: para la tabla “Categories”.
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!
Hasta aquí una vez más, Azure sigue ofreciendo posibilidades y acercándonos más al verdadero mundo Cloud.
Saludos @Azureños
Juanlu
Etiquetas: SQL Azure, SQL Azure DataSync, Windows Azure
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.
- Antes de nada, veamos la configuración del deploy/publicación.
- Pulsamos “Publish…” y a seguir los pasos del wizard.
- Como puede verse, podemos optar por modo “Desktop” o “Web” (Yo opto por el Web).
- Seguidamente en el siguiente paso del Wizard introducimos el “Subcription ID” copiado del portal de Azure. Exite un boton de acceso directo al mismo “Open the Windows Azure Portal”.
- Seleccionamos un certificado o creamos uno nuevo, en cuyo caso será necesario “Copy Path” para localizar la ubicación del mismo y poderlo subir al portal de Azure, concretamente a “Management Certificates”.
- Si no subimos el certificado a Azure según comento en el punto anterior, veremos el siguiente mensaje (“Could not connect to Windows Azure using the provided Subscription ID and Certificate”) y no podremos continuar:
- Si todo va bien, accederemos al siguiente paso, donde seleccionaremos los datos de nuestra subscripción de azure sobre la que queremos realizar el despliegue. Adicionalmente seleccionamos el “Environment”(Deployment) en el que se va a realizar el despliegue “Production” o “Staging”.
- En el siguiente caso seleccionamos un certificado existente (.pfx) o creamos un nuevo certificado <Create new self-signed-certificate….>. IMPORTANTE. Este certificado tendremos que subirlo tambien a Azure a través de su portal, pero en este caso, lo asociaremos a la subscripción del despliegue.
- Ahora toca el turno a la configuración de la conexión de datos (SQL Azure).
- En el siguiente paso volvemos a seleccionar un certificado (distino al del selecionado en los pasos previos) o crear un nuevo certificado.
- Si intentamos seleccionar el mismo certificado (.pfx) selecionado previamente en pasos anteriores, encontrearemos este otro error “Unable to add ‘<XapCertifie>.pfx’. A file with than name alread exists ”:
- Una vez más y si todo va bien, pasaremos al siguiente paso, al último.
- “Publish…” y a esperar varios minutos con el siguiente mensaje en Visual Studio.
- Una vez finalizada la espera. Espera necesaria para la subida de los ficheros “.cspkg” y “ServiceConfiguration.cscfg” al storage de Azure, concretamente a un container “lightswitch”. A continuación se abrirá el portal de azure y comenzará el despliegue.
- Finalmente la aplicación esta en Azure (“EN LA NUBE”).
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! . Desde mi punto de vista y sólo es una idea, el equipo de Azure está pensando 100% en el “Zero Code”,
.
Saluods @LightSwitch/SAzure
Juanlu
Etiquetas: LightSwitch, SQL Azure, Windows Azure