Utilizando Reactive Extensions – Play .NET

En esta entrada seguiré con el tema desarrollado en la anterior entrada, Reactive Extensions, utilizando un proyecto de ejemplo para poner práctica los conceptos descritos en ésta. Para dicho ejemplo planteo un escenario en el que tenemos un único origen de datos que envía diferentes tipos de información que se mostrarán por pantalla y en el que también se lanzarán procesos de larga de duración.

Suscripción a origen de datos

El primer paso es definir un objeto de tipo ISubject, que representa un flujo, al que los diferentes módulos se suscribirán y que será en el encargado de notificar a éstos cuando se reciba información desde el origen de datos. Para este ejemplo, el origen de datos será un DispatcherTimer que lanzará datos aleatorios cada segundo.

private readonly ISubject _source = new Subject();

En el procedimiento de suscripción es donde utilizaremos varios de los aspectos vistos en las entrada anterior ya que la idea es que un módulo muestre solo cierto tipo de información, además de que los datos  sufran una transformación previa a su notificación a lo suscriptores.

Seguir leyendo

Anuncios
Publicado en .NET | Etiquetado , , | Deja un comentario

Reactive Extensions – Play .NET

Navegando por la web de Silverlight me encontré con esta librería, Reactive Extensions (Rx), que como dice en su propia página, nos permite desarrollar aplicaciones basadas en eventos y con operaciones asíncronas utilizando secuencias observables y operadores LINQ.

Rx se compone de :

  • Tipos que permiten representar flujos de datos asíncronos (Observables)
  • Operadores que nos permiten consultar esos flujos de datos asíncronos (Linq)
  • Tipos para parametrizar concurrencia (Scheduler)

Entre todo lo que aporta Rx, en esta entrada trataré su uso en contraposición a los eventos clásicos de .NET. En primer lugar, detallaré la diferencias entre ambos. La siguiente tabla muestra los aspectos más básicos de las dos alternativas: declaración, publicación, y suscripción:

Play .NET - Rx vs Eventos

Rx vs Eventos

En este aspecto ambos métodos son similares y a priori Rx no aporta ningún beneficio respecto a los eventos. Pero vamos a ver cómo Rx mejora a los eventos.

Seguir leyendo

Publicado en .NET | Etiquetado , , | Deja un comentario

Introducción a RIA Services – Play Silverlight

En este post haré una pequeña introducción a RIA Services, un framework que nos facilitará el desarrollo de aplicaciones RIA (Rich Internet Application). Este tipo de aplicaciones, implica llevar la lógica de presentación al cliente con lo que, a diferencia de las aplicaciones web tradicionales, la lógica de negocio y la de presentación se encuentran en dos capas diferentes. Para facilitar esa comunicación disponemos de RIA Services, que representa una capa intermedia que nos evita tener que desarrollar y mantener la lógica de la aplicación en ambas capas. A lo largo de esta entrada, explicaré los conceptos básicos de esta tecnología a través de un ejemplo y además veremos su integración con Entity Framework 4.

Seguir leyendo

Publicado en Entity Framework, Prism, RIA Services, Silverlight | Etiquetado , , , | Deja un comentario

Prototipos con SketchFlow – Play Silverlight

En esta entrada voy a introducir una herramienta de prototipado rápido que he tenido la oportunidad de utilizar recientemente en el trabajo. Se trata de SketchFlow, incluída en Expression Blend, que me parece realmente útil en las fases iniciales de un proyecto, cuando aún no se es totalmente consciente de todos los requisitos a cumplir por la aplicación a desarrollar. Este tipo de herramientas ayudan a formar una idea bastante aproximada de lo que se quiere, creando un prototipo de la aplicación que a lo largo de varias iteraciones y en colaboración con el cliente, va obteniendo la forma que tendrá la aplicación finalmente, a la vez que nos puede facilitar la toma de requisitos.

En esta entrada desarrollaré un prototipo explicando los aspectos básicos de SketchFlow desde la creación del prototipo en sí hasta la gestión del feedback proporcionado por el cliente para hacer evolucionar el prototipo.

Seguir leyendo

Publicado en Silverlight | Etiquetado , , , , | Deja un comentario

Interacción con el usuario MVVM – Play Silverlight

En esta entrada quiero desarrollar un tema que dejé pendiente en la anterior entrada y que considero importante, como es la interacción con el usuario para  aspectos como notificar ciertos eventos o solicitar confirmación antes de ejecutar una operación. La forma habitual de hacerlo es través de la clase MessageBox, sin embargo, su uso rompe con el patrón MVVM, ya que haríamos referencia a componentes visuales desde el modelo de la vista.

Existen dos enfoques para tratar los aspectos relacionados con la interacción con el usuario. Por un lado, tenemos el uso de un servicio de interacción del que podemos hacer uso desde el modelo de la vista y en el que la implementación de dicho servicio es independiente de la de la vista. Por otra parte, tenemos un enfoque en el que se utilizan objetos de interacción en el modelo de la vista, una serie de componentes de la vista y, triggers y comportamientos para unir ambos extremos. Este último es el enfoque utilizado en Prism y del que incluiré un pequeño proyecto de prueba en el que se utilizarán todos las posibilidades que ofrece. El resultado de lo visto en esta entrada dará como resultado lo siguiente:

Seguir leyendo

Publicado en Patrones, Prism, Silverlight | Etiquetado , , , , | Deja un comentario

Modelo de navegación con Prism – Play Silverlight

En esta entrada quiero desarrollar el tema de navegación de aplicaciones Silverlight viendo dos enfoques, primero utilizando el API de navegación propio de Silverlight y por otro lado el necesario para aplicaciones modulares en las que se utiliza Prism.

Framework de Navegación de Silverlight

El framework de navegación de Silverlight gira en torno a tres componentes. El componente principal es el control Frame, que no es más que un área dentro de la cual se mostrará cierto contenido que se recuperará en base a un uri.

El segundo elemento principal es el control Page, que será el contenido de nuestra aplicación. Este tipo de control es básicamente un UserControl, al que se le añaden conceptos de navegación como eventos adicionales, contexto o título.

Seguir leyendo

Publicado en Patrones, Prism, Silverlight | Etiquetado , , , , , , | Deja un comentario

Mejorando la experiencia de usuario – Play Silverlight

Tecnologías como Silverlight y WPF, nos permiten llevar la experiencia de usuario a un nivel superior mediante el uso de herramientas como Expression Blend. Existen una serie de conceptos de diseño que nos permiten mejorar la experiencia de usuario, como es el caso del concepto de interfaz de usuario fluida (Fluid UI). Este concepto tiene por objetivo conseguir que el usuario pueda seguir y observar los cambios en la interfaz de usuario, evitando que éste quede confuso ante los cambios que se produzcan en la misma. Esto se obtiene haciendo que los elementos visuales se muevan y aparezcan de forma suave. Blend nos ofrece una serie de herramientas que nos permite poner en práctica este concepto.

FluidLayout

FluidLayout es una característica del Visual State Manager que permite realizar cambios de estado de forma fluida. Esta funcionalidad respondía a la necesidad de disponer de diferentes estados, cada uno de ellos con una disposición de los elementos en la IU diferente o con ciertos elementos ocultos. Sin embargo, esto no era posible hasta la aparición de FluidLayout ya que, en el caso de la ocultación de elementos, la transición de la propiedad Visibility de Visible a Collapsed no podía hacerse de forma fluida al no haber valores intermedios entre ambos.

Seguir leyendo

Publicado en Animaciones, Silverlight, UX | Etiquetado , , , , , , , , , | Deja un comentario