Dos funcionalidades a destacar en Windows 8.1

Introducción

Tras la salida de la Preview de Windows 8.1 y próximo lanzamiento en octubre, vamos hablar un poco de sus nuevas características para desarrolladores de .NET. Entre las novedades tenemos desde nuevos controles hasta una nueva interfaz y experiencia de usuario. En este post se intenta explicar dos funcionalidades que a mi parecer son bastantes innovadoras y útiles como desarrollador .NET en la plataforma Windows 8. Lo primero que voy hacer es una pequeña introducción de las funcionalidades elegidas y a continuación implementaré un ejemplo intentando integrar las dos características en una misma aplicación.

Funcionalidades

Se explicarán en detalle dos  funcionalidades que para mi son bastante novedosas. Un control Hub Control (XAML, C#) y la mejora en conexión de red HTTPClient.

Hub Control

Este control yo creo que es uno de los que más me ha impresionado a la hora de revisar las novedades. Lo principal es que pueda servir como estructura base para crear tu nueva aplicación y lo secundario, y no menos importante, es que pueda diseñar y estructurar a tu gusto cada sección. A diferencia del GridView de la versión anterior, Hub Control permite mostrar información de una forma más agradable para el usuario. Las mejoras para el desarrollador son:

  • Ahorrarnos la necesidad de enlazar una fuente de elemento, ya que se pueden crear múltiples secciones y cada sección será distinta.
  • Como hemos dicho varias veces, la personalización de cada sección.
  • Rapidez de saber utilizar el control.

Muchas aplicaciones en la nueva versión de Windows 8.1, utilizan ya el Hub Control como puede ser la Tienda

Tienda utilizando el control Hub
Tienda utilizando el control Hub

 

HTTP Client

La segunda funcionalidad que destaca, en mi opinión, es la de la conexión a Internet, y entre ella la nueva inserción en el espacio de nombres de Windows.Web.Http. Esta nueva API proporciona compatibilidad con todas las características en todos los lenguajes admitidos y reemplaza la API de HTTP original de Windows 8. A diferencia de la anterior versión el espacio de nombres en el que esta incluido era la de System. Gracias a esta nueva incorporación considero que HttpClient es importante ya que las principales características de las Windows Store apps son el contenido, y actualmente la gran mayoría de ese contenido se obtiene desde Internet y sus servicios. Con este componente sera todo mucho más sencillo. En las operaciones de solicitud básicas, la nueva API tiene una interfaz sencilla para administrar la tareas más comunes y proporciona valores predeterminados razonables para autenticación (AUTH) que se aplican a la mayoría de los escenarios. En las operaciones HTTP más complejas, se ofrecen funcionalidades adicionales como las siguientes:

  • Métodos para verbos comunes (DELETEGETPUT y POST)
  • Compatibilidad con diseños y configuraciones de autenticación comunes
  • Acceso a detalles de la Capa de sockets seguros (SSL) en el transporte
  • Capacidad de incluir filtros personalizados en aplicaciones avanzadas
  • Capacidad de obtener, establecer y eliminar cookies
  • Información de progreso de solicitudes HTTP disponible en métodos asincrónico

Las novedades que trae este componente son los Headers y Filters. El espacio de nombres Windows.Web.Http.Headers admite la creación de cookies y encabezados HTTP, que se asocian como propiedades a objetos HttpRequestMessage y HttpResponseMessage. Con el modelo de filtro de solicitud web que admite el nuevo espacio de nombres Windows.Web.Http.Filters, es más sencillo que nunca realizar solicitudes web adecuadas a escenarios de seguridad y conectividad específicos, como:

  • Administración de la autenticación
  • Restricción del acceso en redes de uso medido
  • Compatibilidad con técnicas de programación modernas como la creación de objetos ficticios
  • Reintentos automáticos tras errores de conexión

Implementación de las funcionalidades

Bueno llega lo divertido para todo desarrollador, el momento de crear cosas. Lo primero que hacemos es abrir nuestro Visual Studio 2013 Preview y creamos un nuevo proyecto, si te das cuenta existe una plantilla predefinida con el control Hub. Nosotros crearemos una aplicación vacia para implementar el patrón MVVM desde cero, creando servicios donde utilizaremos el HttpClient y una View que será la donde utilizaremos el control Hub.Plantilla AppHub

Una vez creado el proyecto montamos todo lo que necesitamos para utilizar el patrón modelo-vista-modelo de vista (MVVM), utilizo este patrón para desacoplar código de interfaz de usuario y código que no sea de interfaz de usuario. Con MVVM, puedo definir la interfaz de usuario de forma declarativa (por ejemplo, mediante XAML) y usas el marcado de enlace de datos para vincularla a otras capas que contengan datos y comandos de usuario. El patrón MVVM organiza el código de tal forma que es posible cambiar partes individuales sin que los cambios afecten a las demás partes. Esto presenta numerosas ventajas, como las siguientes:

  • Permite un estilo de codificación exploratorio e iterativo.
  • Simplifica las pruebas unitarias.
  • Permite aprovechar mejor herramientas de diseño como Expression Blend.
  • Admite la colaboración en equipo.

Cuando se usa el patrón MVVM, una aplicación se divide en las siguientes capas:

  • La capa de modelo incluye todo el código que implementa la lógica principal de la aplicación y define los tipos requeridos para modelar el dominio de la aplicación. Esta capa es completamente independiente de las capas de vista y modelo de vista.
  • La capa de vista define la interfaz de usuario que utiliza marcado declarativo. El marcado de enlace de datos define la conexión entre componentes específicos de la interfaz de usuario y diversos miembros de modelo de vista (y, en ocasiones, de modelo).
  • La capa de modelo de vista proporciona destinos de enlace de datos para la vista. En muchos casos, el modelo de vista expone el modelo directamente o proporciona miembros que encapsulan miembros de modelo específicos. El modelo de vista también puede definir miembros para realizar un seguimiento de los datos que son relevantes para la interfaz de usuario pero no para el modelo, como el orden de visualización de una lista de elementos.
Estructura de MVVM
Estructura de MVVM

Ahora vamos a implementar el servicio que hemos creado DataService, en el cual utilizamos HttpClient. En este servicio hemos utilizado la referencia Newstonsoft.Json para poder obtener datos descargados del HttpClient y convertirlos en un modelo de datos. Lo que hacemos en este código es descargar de una URI información en Json, a través del HttpClient, y deserializarla en un objeto (Noticias), a continuación vemos el método donde lo utilizamos:

Una vez obtenido los datos e implementando el uso del HttpClient vamos a utilizar el Control Hub lo primero de todo es saber que la etiqueta que utilza en XAML es:

Continuamos introduciendo un titulo a la aplicación que será visible siempre incluso utilizando el scroll, para ello introducimos la etiqueta Header=””.

Sigamos con la creación de secciones, para esta aplicación he creado dos secciones, una principal donde se muestra una imagen y una secundaria donde se muestran las noticias, el aspecto de la aplicación final será el siguiente:Captura de pantalla (3)

Sección 1

 

Sección 2

Bueno esto es todo sobre las dos funcionalidades del nuevo Windows 8.1 espero que os guste, os dejo el código de la aplicación a continuación por si quereis revisar alguna cosa. Descargar Ejemplo

Un saludo y hAPPy Coding!!

Pin It