Obteniendo datos en tus aplicaciones de Windows Phone

Este artículo es una traducción del artículo original encontrado en: http://create.msdn.com/en-US/education/quickstarts/Getting_Data_into_your_Windows_Phone_Applications.

Hay varias maneras de almacenar y recuperar datos en tus aplicaciones de Silverlight para Windows Phone 7.  Este artículo proporciona una guía para determinar qué enfoque se debe utilizar en función de tus necesidades.  Además, este inicio rápido proporciona vínculos a otros temas que contienen más información.

Este artículo contiene las siguientes secciones: 

  • Fuentes de Datos
  • Archivos Locales
  • Almacenamiento Aislado
  • Terminología de Servicios Web
  • Tecnologías de Servicios Web
  • Decidiendo que método utilizar

Fuentes de Datos

Los datos pueden existir en varios lugares.  Por ejemplo, los datos de sólo lectura se pueden almacenar en un archivo local dentro de tus aplicaciones. Los datos específicos de usuario pueden ser almacenados localmente en un área llamada Almacenamiento Aislado.  Los datos pueden ser almacenados en la Internet y se pueden acceder ellos a través de Servicios Web.

clip_image002

Archivos locales

Puedes utilizar archivos, como archivos de texto y XML, para almacenar localmente datos de sólo lectura.  Los archivos locales pueden ser compilados como archivos de recursos o archivos de contenido.

Archivos de recursos

Los archivos de recursos están incrustados en el ensamblado del proyecto.  Puedes utilizar archivos de recursos con la aplicación y proyectos de biblioteca, y desplegar los ensamblados dentro o fuera del paquete de la aplicación (.xap).  La ventaja de un archivo de recursos es que el archivo siempre estará disponible para la aplicación.  Sin embargo, tu aplicación puede tardar más tiempo para iniciar al utilizar los archivos de recurso.  Se especifica que un archivo es un archivo de recursos mediante el establecimiento de la propiedad Build Action como Resource en Visual Studio.  Puedes acceder a los archivos de recursos mediante el método Application.GetResourceStream.  Para un ejemplo consulta Application.GetResourceStream.  

Normalmente, se utilizan archivos de recursos cuando tienes las siguientes condiciones:

  • No estás preocupado por el tiempo de inicio de aplicación.
  • Cuando no es necesario actualizar el archivo de recursos después de que se compila en un ensamblado.
  • Cuando quieres simplificar la complejidad al distribuir aplicaciones, mediante la reducción del número de dependencias de archivos.

Archivos de Contenido

Por motivos de rendimiento, los archivos de contenido son preferibles a los archivos de recursos para las aplicaciones de Windows Phone.  Los archivos de contenido se incluyen en el paquete de aplicación (.xap) sin incrustarse en el ensamblado del proyecto.  A pesar de que no se compilan en un ensamblado, los ensamblados se compilan con metadatos que establecen una asociación con cada archivo de contenido.  Los archivos de contenido pueden ser compartidos por varios ensamblados en el paquete.  Se especifica que un archivo es un archivo de contenido al establecer la propiedad Build Action en Visual Studio a Content.  Puedes acceder a un archivo de contenido relativo al archivo paquete de aplicación.  Para obtener un ejemplo que utiliza el método XElement.Load para acceder a un archivo de contenido, consulta Cargando un archivo XAML.

Normalmente, usas archivos de contenido cuando tienes las siguientes condiciones:

  • Cuando quieres ser capaz de actualizar los archivos de contenido, sin necesidad de recompilar el ensamblado que los consume.
  • Cuando estás preocupado por el tiempo de inicio de aplicación.

Almacenamiento Aislado

Si necesitas almacenar y recuperar información específica del usuario, puedes utilizar el Almacenamiento Aislado. En las aplicaciones de Silverlight para Windows Phone, no hay acceso directo al sistema de archivos del sistema operativo.  Sin embargo, puedes utilizar el Almacenamiento Aislado para almacenar y recuperar datos de forma local en el dispositivo del usuario.  Hay dos maneras de utilizar el Almacenamiento Aislado.  La primera es guardar o recuperar datos como pares clave/valor mediante la clase IsolatedStorageSettings.  La segunda forma es guardar o recuperar archivos mediante la clase IsolatedStorageFile.  Para obtener más información sobre cómo utilizar el Almacenamiento Aislado, consulta Almacenamiento Aislado. [Almacenamiento Aislado.docx]

Terminología de Servicios Web  

Trabajar con los Servicios Web puede ser un poco confuso debido a los diferentes tipos de servicios, formatos y tecnologías.  Es útil tener una comprensión básica de algunos de los términos.  Los siguientes son algunos términos relacionados con los Servicios Web.

Término

Descripción

Servicio Web

Unidades de la lógica de aplicación que proporcionan datos y servicios a otras aplicaciones.  Las aplicaciones acceden a los Servicios Web utilizando protocolos Web estándar y formatos de datos tales como HTTP, XML y SOAP, independiente de la forma en que cada Servicio Web sea implementado. 

REST

(Representational State Transfer Protocol) Un protocolo para exponer recursos en la web para el acceso de los clientes.

POX

(Plain Old XML) Término utilizado para describir XML básico.

JSON

(JavaScript Object Notation)  Un formato ligero para el intercambio de datos.  Está diseñado para ser legible por humanos, pero fácilmente interpretado por una computadora.

OData

(Open Data Protocol)  Un protocolo Web para consultar y actualizar datos.

SOAP

(Simple Object Access Protocol) Un protocolo ligero, destinado a intercambiar información estructurada en un entorno descentralizado y distribuido.

 

Tecnologías de Servicio Web

Hay varias tecnologías de redes y Servicios Web que puedes utilizar para obtener datos en tus aplicaciones de Silverlight para Windows Phone.  Estas tecnologías incluyen las siguientes:

  • Clases HTTP
  • Servicios WCF
  • WCF Data Services (servicios de OData)
  • Servicios Windows Azure

Clases HTTP

Puedes acceder a los Servicios Web o recursos en un servidor de red directamente desde una aplicación de Silverlight para Windows Phone mediante las clases HttpWebRequest, HttpWebResponse  o WebClient presentes en el espacio de nombres System.Net.  Estas clases proporcionan la funcionalidad necesaria para enviar solicitudes a cualquier Servicio Web disponible a través del protocolo HTTP.  Silverlight no admite la capacidad de alojar los servicios basados ​​en HTTP, por lo que estas clases son útiles cuando la aplicación del teléfono está utilizando un Servicio Web existente.  Normalmente se utilizan estas clases si el servicio HTTP se encuentra alojado por un tercero y no dentro de tu control y la respuesta del servicio es XML o JSON.  Ten en cuenta, sin embargo, que la serialización JSON está limitada en Windows Phone.  Puedes utilizar estas clases para construir una petición, asegurándote que coincida con el formato esperado por el servicio.  No obstante, si estás construyendo el servicio tú mismo basado en un modelo de datos existentes, Silverlight ofrece soluciones más productivas que pueden ser construidas usando WCF, tal como se describe en la siguiente sección.  Para obtener más información sobre cómo utilizar la clase WebClient, para acceder a servicios Web, consulta [Construyendo un Cliente de Servicio Web REST.docx].  Para obtener más información acerca de las restricciones de seguridad HTTP y acceso a los Servicios Web utilizando las clases HttpWebRequest, HttpWebResponse o WebClient, consulta Conectando a Servicios Web y de Datos para Windows Phone  y Comunicación HTTP y Seguridad con Silverlight.  

Servicios WCF

Windows Communication Foundation (WCF) es un framework para la construcción y acceso a los Servicios Web.  WCF te permite exponer una clase como un servicio e intercambiar objetos entre Silverlight y ese servicio.  En una aplicación de Silverlight para Windows Phone, puedes utilizar la herramienta SLsvcutil.exe o la característica de Agregar Referencia a Servicio en Visual Studio para generar una clase proxy local para el servicio.  Para obtener más información, consulta Redes en Silverlight para Windows Phone.  Para obtener más información sobre cómo utilizar la herramienta SLsvcUtil, consulta Usando SLsvcutil.exe para acceder a un Servicio.  Las clases proxy te permiten acceder al servicio como si fuera una clase local.  Los servicios WCF soportan una amplitud de protocolos (incluyendo HTTP y TCP) y una variedad de formatos, tales como SOAP, XML y Atom.  Para obtener más información, consulta Cómo: Acceder a un servicio desde Silverlight.

 WCF Data Services (servicios de OData)

WCF Data Services, anteriormente conocido como ADO.NET Data Services, es un framework para acceder a los datos en un modelo de datos existentes, usando el estilo de recursos REST (Representational State Transfer).  WCF Data Services expone los datos como un feed de Open Data Protocol (OData).  Además, si tu aplicación de Silverlight para Windows Phone interactúa con SharePoint, SharePoint 2010 expone datos como WCF Data Services.  WCF Data Services maneja toda la comunicación HTTP, serialización, y otras tareas que tradicionalmente tienes que hacer cuando intentas exponer tu modelo de datos como un servicio.  Esto significa que las aplicaciones pueden acceder a estos datos mediante el protocolo estándar HTTP para ejecutar consultas, e incluso crear, actualizar y eliminar datos en un servicio de datos, ya sea en el mismo dominio o a través de dominios.  La funcionalidad OData para Windows Phone, es proporcionada por la biblioteca cliente OData disponible en Codeplex.  Para obtener más información sobre cómo generar una clase de proxy y crear un cliente para un servicio OData, consulta Información general del Protocolo Open Data (OData) para Windows Phone y Cómo: Consumir un servicio OData para Windows Phone.

Servicios de Almacenamiento de Windows Azure 

Puedes utilizar Windows Azure para almacenar y recuperar datos para usarlos en tus aplicaciones de Windows Phone, sobre todo porque el almacenamiento en el dispositivo es limitado.  La plataforma Windows Azure ofrece varias opciones de almacenamiento de datos para las aplicaciones de Windows Phone.  Los servicios de almacenamiento de Windows Azure proporcionan un almacenamiento duradero y persistente en la nube y  pueden escalar elásticamente para satisfacer una demanda creciente o decreciente.  La forma en la que accedes al almacenamiento de Windows Azure es muy similar a la forma en que se accede a un Servicio Web.  Para obtener más información sobre el uso de los servicios de almacenamiento de Windows Azure con aplicaciones de Windows Phone, consulta Almacenando datos en la plataforma Windows Azure para Windows Phone.  

Decidiendo qué método utilizar

Una vez que conozcas los requerimientos de tu aplicación, puedes decidir qué método es mejor para usarse.  En la siguiente tabla se enlistan algunos escenarios y el enfoque recomendado.

Escenario

Enfoque Recomendado

Quieres incrustar datos de sólo lectura en el ensamblado

Archivo local de recursos

Quieres actualizar datos de sólo lectura sin necesidad de recompilar

Archivo local de contenido

Quieres almacenar y recuperar información específica del usuario

Almacenamiento Aislado

Quieres acceder a datos de un servicio REST o POX de terceros

Clases HTTP

Quieres acceder a una fuente RSS

Clases HTTP

Quieres acceder a los datos de un servicio SOAP

Servicios WCF, usando una clase proxy

Quieres exponer una clase existente como un servicio para consumir desde Silverlight

Servicios WCF

Quieres acceder a los datos de un servicio que expone una fuente OData

WCF Data Services

Necesitas almacenar y recuperar grandes cantidades de datos

Servicios de almacenamiento de Windows Azure