Featured Posts

Diplomado de desarrollo de aplicaciones para Windows Phone 7.1–LatinoaméricaDiplomado de desarrollo de aplicaciones para Windows... Los invito cordialmente a que se inscriban al Diplomado de desarrollo de aplicaciones para Windows Phone 7.1, impulsado por Microsoft México para todo el mundo!  Completamente...

Readmore

Nueva carrera en Microsoft Virtual Academy: Windows Phone 7.1 (Mango)Nueva carrera en Microsoft Virtual Academy: Windows... Tengo el gusto de darles a conocer la disponibilidad de una nueva carrera en el Microsoft Virtual Academy (MVA): La carrera de Windows Phone 7.1 Mango. Esta es la descripción...

Readmore

Nueva carrera en Microsoft Virtual Academy: Silverlight 4Nueva carrera en Microsoft Virtual Academy: Silverlight... ¿Eres estudiante de Microsoft Virtual Academy (MVA)? Tengo el gusto de anunciarles oficialmente el lanzamiento de la nueva carrera de Silverlight 4 para esta plataforma educativa. La...

Readmore

Rodrigo Díaz Concha Rss

Silverlight para Windows Phone Mango: Bases de Datos locales con SQL Server CE–Parte 1

Posted on : 31-10-2011 | By : Rodrigo | In : Silverlight, Silverlight 4, Windows Phone 7.1

Tags: , , , , ,

2

Windows Phone Mango incluye SQL Server CE, motor de bases de datos relacionales lo suficientemente pequeña para que ejecute en el teléfono, pero a la vez bastante poderosa como para cubrir todas las necesidades de almacenamiento de datos relacionales para nuestras aplicaciones.  En este artículo hablaremos de cómo crear una nueva base de datos para nuestras aplicaciones de Silverlight para Windows Phone Mango, así como las operaciones CRUD (Create, Read, Update, Delete) básicas.

La necesidad de una base de datos local

SNAGHTML20253b5[4]Hay una gran cantidad de escenarios en donde contar con una base de datos relacional es justamente uno de los requerimientos básicos.  Por ejemplo: el tener catálogos de datos locales que puedan ser utilizados cuando la señal de datos del teléfono se pierda, o un caché local de datos que posteriormente puedan ser sincronizados a un almacenamiento más robusto y persistente (la Nube, por ejemplo) y un largo etcétera.

SQL Server CE en Windows Phone Mango, cubre precisamente ese requerimiento.  Con esto obtenemos una gran cantidad de ventajas, como por ejemplo: tener a nuestro alcance un almacenamiento de datos robusto, el poder crear consultas complejas a dichos datos, no tener que referenciar ensamblados de terceros.  Adicionalmente a esto, todas las operaciones de tipo CRUD son manejadas eficientemente por el mismo motor, además de que contamos con un API consistente. 

Es muy importante mencionar que cada base de datos es privada para cada aplicación, y físicamente es guardada en el Almacenamiento Aislado privado que tiene cada aplicación en Silverlight para Windows Phone Mango, por lo que no es posible (al momento de estar escribiendo este artículo”) tener una base de datos común para varias aplicaciones dentro del teléfono.  También es de suma importancia destacar que SQL Server CE no corre como un servicio en segundo plano dentro del teléfono, sino que correrá únicamente en el mismo proceso que la aplicación que lo invoca.

Mencioné que hay algunas ventajas.  Claro que las hay.  Sin embargo, también hay algunas desventajas:

No se permite Transact-SQL directo

Es común entre los desarrolladores de aplicaciones que tengan que escribir ellos mismos las sentencias CRUD para realizar las operaciones en su base de datos.  En SQL Server CE para Windows Phone Mango no es posible ejecutar consultar Transact-SQL de manera directa.

image

Lo sé.  Para algunas personas, el no tener que escribir sentencias Transact-SQL de manera manual es más bien, una ventaja Smile

No hay un diseñador visual

imageSi deseas crear un esquema para tu base de datos de SQL Server CE en Windows Phone Mango, lo debes hacer exclusivamente vía código.  Cabe mencionar que hay algunos “hacks” que han hecho algunos desarrolladores para convertir un archivo de base de datos a una versión de SQL Server CE de Mango, pero este artículo se basa en los fundamentos del motor y sus posibilidades oficiales.

Pero entonces, si no podemos ejecutar directamente Transact-SQL y tampoco contamos con un diseñador visual para poder crear nuestras bases de datos, sus tablas, sus columnas, etc. ¿cómo lo podemos hacer?

La respuesta a esa pregunta es LINQ para SQL.

LINQ para SQL

LINQ (ojo: se pronuncia LINK, no LINKIÚ como muchas personas escucho que lo hacen) para SQL es un OR/M (Object-Relational Mapper por sus siglas en inglés).  Un OR/M tiene como objetivo en la vida ser un framework que, basándose en un modelo relacional, deriva un modelo de clases y todas las operaciones CRUD pertinentes para ese modelo relacional… y nuestras aplicaciones pueden usar ese modelo de clases directamente sin necesidad de ejecutar explícitamente ni una sola línea del lenguaje SQL que soporte ese motor de base de datos en cuestión.  Eso es precisamente el por qué no es necesario ejecutar directamente cláusulas T-SQL hacia nuestras bases de datos de Windows Phone Mango.

LINQ para SQL es usado en Windows Phone Mango para todas las operaciones CRUD –como mencioné anteriormente-, y también para todas las operaciones de tipo DDL (Data Definition Language), es decir, para la creación del esquema de la base de datos, sus tablas, columnas, claves foráneas, etcétera.

LINQ para SQL está implementado solo de manera parcial en Windows Phone Mango.  Para mayor información consulta esta página.

Luego entonces, nuestras aplicaciones deben hacer uso del lenguaje LINQ, para poder realizar las operaciones hacia la base de datos.  El rol que juega LINQ para SQL es el traducir esas consultas de LINQ hacia Transact-SQL y ejecutarlas en el motor de base de datos.  Cuando la base de datos regrese resultados (por ejemplo, de una consulta) esos datos son traducidos de regreso a objetos que puedas utilizar dentro de tu aplicación.  Esta traducción –de ida y de vuelta- la realiza automáticamente LINQ para SQL sin tu intervención, por lo que la eficiencia al momento de programar se incrementa considerablemente.  Solo es cuestión de acostumbrarse a este paradigma y conocer sus diversas posibilidades.

En la siguiente parte de este artículo veremos cómo programáticamente crear una base de datos nueva dentro de una aplicación de Silverlight para Windows Phone Mango, llenarla de datos, consultar esos datos y actualizarlos.

Silverlight para Windows Phone Mango: Mosaicos Dinámicos

Posted on : 31-10-2011 | By : Rodrigo | In : Silverlight 4, Windows Phone 7.1

Tags: , , , , , , , ,

3

Una de las características nuevas en la plataforma de desarrollo de Silverlight para Windows Phone 7.1 "Mango” es el ofrecer un mecanismo para crear programáticamente mosaicos “vivos”, y que estos sean fácilmente actualizables según ciertas condiciones ya sea mientras la aplicación esté ejecutando o no.

En este artículo veremos a detalle la creación de mosaicos dinámicos o “Live Tiles” (Mosaicos vivos, por su nombre en el idioma inglés), sus características y capacidades.

Mosaicos

Los mosaicos son –dentro del lenguaje de diseño Metro- la manera en la que las aplicaciones pueden ser ejecutadas, pero también el mecanismo por el cual las aplicaciones nos pueden avisar que ha sucedido algo de nuestro interés como usuarios finales.  Windows Phone 7.1 incluye dos tipos diferentes de mosaicos: Mosaicos Principales y Mosaicos Secundarios. 

Mosaicos principales

Por ejemplo, cuando tienes configurada una cuenta de correo electrónico en Windows Phone 7, el mosaico que representa la aplicación de correo electrónico se actualiza dinámicamente cuando llega a nuestro buzón un nuevo mensaje, este es un ejemplo de mosaico principal ya que no tuvimos que hacer nada extra para crearlo, sino que ya lo agrega la aplicación al momento de ser instalada.  Este tipo de mosaicos pueden ser creados automáticamente por la aplicación o a través de código.  Es muy importante mencionar que estos mosaicos no pueden ser anclados al menú de inicio automáticamente, sino que el usuario lo debe hacer manualmente.image

Mosaicos secundarios

Silverlight para Windows Phone 7.1, soporta la creación programática de mosaicos secundarios para las aplicaciones.  Esto es de particular interés cuando nuestra aplicación requiere brindar al usuario diversas maneras de ejecutar la aplicación.  Por ejemplo, cada mosaico secundario podría representar un estado completamente diferente a otro en la aplicación, adicionalmente al mosaico principal que nos sirve para ejecutar el aplicativo en cuestión.

En la ilustración se muestra una aplicación que tiene un mosaico principal con el título “Mi App!”, mientras que el resto de mosaicos son secundarios.

Este tipo de mosaicos pueden ser creados únicamente a través de código, además de que se anclan automáticamente al menú de inicio tan pronto como son creados.

 

Características de los Mosaicos

Todos los mosaicos cuentan con las siguientes características, las cuales pueden ser modificadas según sea necesario:

  • Título frontal
  • Imagen de fondo frontal
  • Contador numérico (valor del 1 al 99. Si no se establece, no aparecerá)
  • Título para el reverso del mosaico
  • Contenido para el reverso del mosaico
  • Imagen del reverso del mosaico

Hablando específicamente de las imágenes de los mosaicos, estas deb ser de tipo PNG o JPG y deben tener un tamaño de 173 x 173 pixeles.  Si la imagen no tiene este tamaño, se escalará automáticamente.  Adicionalmente a esto, los archivos deben estar marcados como “Contenido”, dentro del panel de Propiedades en Visual Studio .NET.

image

Clase ShellTile

La clase ShellTile representa un mosaico de nuestra aplicación –ya sea el principal o alguno de los secundarios.  Esta clase está disponible en el Espacio de Nombres Microsoft.Phone.Shell, por lo que es buena idea incluir una cláusula using (o Imports en Visual Basic) en la parte inicial de nuestro código.

La clase ShellTile incluye dos miembros estáticos importantes: la propiedad ActiveTiles, la cual es un diccionario que representa todos los mosaicos de la aplicación en cuestión, siendo el primero en el diccionario el mosaico principal, y también el método Create(), el cual nos sirve para poder crear mosaicos secundarios.

El siguiente fragmento de código obtiene el mosaico principal de la aplicación.

//Obtiene el mosaico de la aplicación
var main = Microsoft.Phone.Shell.ShellTile.ActiveTiles.First();

 

Clase StandardTileData

Hay una especialización de la clase ShellTile: la clase StandardTileData.  Esta clase representa un mosaico que puede estar anclado al menú de inicio, por lo que puede tener las propiedades que indicamos anteriormente como título fronta y de reverso, imágenes, etc.

El siguiente fragmento de código configura el mosaico principal de la aplicación, tanto para la parte frontal como para la parte trasera.

var appTitle = ShellTile.ActiveTiles.First();

if (appTitle != null)
{
    var tileData = new StandardTileData();

    tileData.Title = "Mi Aplicación";
    tileData.Count = 7;
    tileData.BackgroundImage = new Uri("Imagenes/sl4logo.png", UriKind.Relative);
    tileData.BackContent = "Atrás";
    tileData.BackTitle = "Ejemplo";
    tileData.BackBackgroundImage = new Uri("Imagenes/WPLogo.png", UriKind.Relative);

    appTitle.Update(tileData);
}

 

Al ejecutar el anterior código y al anclar el mosaico al menú de inicio manualmente, veremos el resultado deseado, tal y como se muestra en la siguiente ilustración:

SNAGHTML1cadc82

Es importante mencionar que cuando un mosaico tiene contenido en el reverso y éste está anclado al menú de inicio, automáticamente después de un lapso de tiempo el mosaico gira como si fuera un naipe para mostrar dicho contenido.

Creación de mosaicos secundarios

Para crear mosaicos secundarios, utilizamos el método Create() mencionado anteriormente.  Este método estático es parte de la clase ShellTile y solicita como parámetros la ruta dentro de la aplicación que este mosaico secundario representa, y también un objeto de tipo StandardTileData, con las propiedades visuales necesarias que requiera nuestro nuevo mosaico.

El Proyecto

image

Para probar esta funcionalidad, nuestra aplicación de prueba consta de dos páginas: MainPage.xaml y Nombre.xaml. En MainPage el usuario puede escribir su nombre y pulsar sobre el botón.  Al hacer esto, la aplicación navega hacia Nombre.xaml, pasando como parámetro el nombre escrito en la caja de texto de MainPage.  Aquí, el usuario puede pulsar en el botón “Crear mosaico secundario”, lo cual hará precisamente eso, identificando al nuevo mosaico con ese Uri único.

La siguiente ilustración muestra las dos páginas de la aplicación.

SNAGHTML1ed8da8

Es en el botón “Crear mosaico secundario” en donde está implementado el código para crear un mosaico secundario de la aplicación, tal y como se muestra a continuación.  Nota que lo primero que hace el código es asegurarse que no exista otro mosaico secundario con el mismo Uri.  Posteriormente a eso, se crea un nuevo objeto de tipo StandardTileData con el contenido visual adecuado.

if (ShellTile.ActiveTiles.Where((m) => m.NavigationUri 
   == NavigationService.Source).Count() == 0)
{
    StandardTileData newTile = new StandardTileData()
    {
        Title = nombre,
        Count = 1,
        BackgroundImage = new Uri("Imagenes/sl4logo.png", UriKind.Relative),
        BackTitle = "Mosaico Secundario",
        BackContent = "Creado: " + DateTime.Now.ToString(),
        BackBackgroundImage = new Uri("Imagenes/mva.png", UriKind.Relative)
    };

    ShellTile.Create(NavigationService.Source, newTile);
}

 

Una vez ejecutando la aplicación en el emulador, podemos probar esta funcionalidad creando tantos mosaicos secundarios como queramos.  Es importane mencionar que el mosaico principal de la aplicación no es necesario que esté en el menú de inicio para que los mosaicos secundarios estén anclados.  En la siguiente ilustración se muestran tres mosaicos secundarios creados con esta aplicación de prueba.

 
SNAGHTML1e461f7[4]

 

Resumen

Los mosaicos dinámicos o “Live Tiles” son una de las mejoras que podemos encontrar en Silverlight para Windows Phone Mango.  A través de esta característica podemos brindar a los usuarios de nuestras aplicaciones un mecanismo para poder llegar directamente al contenido que ellos desean, ya que cada mosaico puede representar una ruta diferente de acceso dentro de nuestras aplicaciones.

Anunciando: La Entrevista MVP

Posted on : 22-10-2011 | By : Rodrigo | In : Comunidades, General, La Liga Silverlight, MVP, Noticias, Silverlight

Tags: , , ,

1

A partir de lo anunciado en el evento Build el 13 de Septiembre 2011 con respecto a Windows 8 y su Plataforma de Desarrollo, conocer Silverlight es ahora más importante y relevante que nunca.

En La Liga Silverlight – La Primera Comunidad MSDN en Español acerca de Silverlight y tecnologías relacionadas, nos hemos dado a la tarea de entrevistar a diversas personalidades y líderes de opinión en el ámbito tecnológico de Silverlight quienes nos estarán dando a conocer sus puntos de vista con respecto a este y demás temas.

Les presento: La Entrevista MVP

La Entrevista MVP

micsLa Entrevista MVP es una entrevista (inicialmente por escrito, probablemente hagamos alguna entrevista audiovisual a mediano plazo), con periodicidad mensual, en donde podrán obtener de primera mano los puntos de vista, opiniones y comentarios de varios Profesionales Más Valiosos (MVP) de Microsoft, principalmente de Silverlight.

Hoy en día, es sumamente fácil toparnos con pseudo-periodismo digital, ignorante, mal informado y tendencioso, que lo único que hacen es confundir más a las personas que –erróneamente- los leen o escuchan, por lo que es excelente idea el tener a nuestro alcance las opiniones directas de profesionales que saben verdaderamente de lo que están hablando y que cuentan con información y argumentos privilegiados para opinar, contundentemente, acerca de la tecnología en la que son Expertos.

Las entrevistas estarán disponibles mensualmente (y si es posible, más frecuentemente) en el sitio de La Liga Silverlight y estarán completamente traducidas a nuestro bello idioma.

¿Les gusta la idea?  ¡No se pierdan esta serie, que estará bastante interesante!

Salu2!!!

Nueva Ciudad para el Silverlight Tour–Córdoba, Argentina

Posted on : 22-10-2011 | By : Rodrigo | In : Noticias, Silverlight 5, Silverlight Tour Workshop

Tags: , , , , , , , ,

0

CordobaEl Curso de Silverlight que Da La Vuelta al Mundo: el Silverlight Tour Workshop visitará por primera vez la ciudad de Córdoba, Argentina, el próximo 17 de enero 2012!

El Silverlight Tour es un curso de 3 días, de 27 horas en total acerca de Silverlight 5.  Muy probablemente –en función de lo que sea públicamente liberado por parte de Microsoft antes de que finalice este año- esta fecha en Córdoba ya se imparta con la versión final de Silverlight 5 (RTW).

Les recuerdo que el Silverlight Tour incluye para cada asistente una licencia de la suite de controles RadControls for Silverlight de nuestros socios Telerik, con un valor en el mercado de 999 USD.

Asimismo, esta fecha cuenta con una promoción de descuento por pronto pago del 15%, (vence el 31 de Diciembre 2011) por lo que si están interesados en asistir y aprender a profundidad la plataforma de desarrollo de Silverlight 5… esta es su mejor opción.  Revisa el temario completo y los testimonios de algunos de nuestros asistentes!

¡Allá nos vemos!

(Foto: Wikipedia)