Mostrando entradas con la etiqueta LINQ. Mostrar todas las entradas
Mostrando entradas con la etiqueta LINQ. Mostrar todas las entradas

domingo, 24 de mayo de 2015

Proyecto Kinect: uso de Windows Presentation Foundation (WPF)

Windows Presentation Foundation (WPF) es un marco de trabajo de interfaz de usuario que permite crear aplicaciones cliente enriquecidas e interactivas. Esta plataforma de desarrollo WPF admite un amplio conjunto de características de desarrollo de aplicaciones, que incluye un modelo de aplicaciones, recursos, controles, gráficos, diseño, enlace de datos, documentos y seguridad. Es un subconjunto de .NET Framework, además hace uso del lenguaje XAML.

La ventaja específica que XAML ofrece a WPF es que XAML es un lenguaje completamente declarativo. En un lenguaje de programación declarativa, el desarrollador (o diseñador) describe el comportamiento y la integración de los componentes sin utilizar programación procedural. La utilización de XAML para desarrollar interfaces de usuario permite, también, la separación entre modelo y vista, lo que se considera un buen principio de arquitectura. En XAML, los elementos y atributos mapean las clases y propiedades en el API subyacente.

Entre las características más importantes de WPF:
  • Ofrece un conjunto de servicios de datos para permitir a los desarrolladores de aplicaciones enlazar y manipular los datos dentro de las aplicaciones.
  • Admite consultas LINQ, como se detalló en el post sobre LINQ to Entities.
  • Proporciona plantillas de datos para controlar la presentación de los datos.
  • Proporciona un conjunto de controles integrados, que contiene elementos como botones, menús, listas, etc.
  • Separación lógica entre un control y su apariencia.
  • Proporciona un sistema integrado para la creación de interfaces de usuario con elementos multimedia comunes, como imágenes vectoriales y de mapa de bits, audio y vídeo.
  • Soporta la mayoría de formatos de imagen más comunes: BMP, JPEG, PNG, GIF, iconos, etc.
  • Admite por defecto los formatos de vídeo WMV, MPEG y algunos archivos AVI.
El uso de WPF en el proyecto viene motivado por las ventajas que suponen todas las características que ofrece, además de la gran adecuación y estabilidad que añade con respecto a las demás tecnologías utilizadas. El hecho de ser un subconjunto de .NET Framework nos asegura la compatibilidad, por ejemplo, con WCF, Entity Framework y la SDK de Kinect.

En el siguiente post hablaré del patrón de diseño Model-View-ViewModel (MVVM).

¡Saludos!

Álvaro Alcolea

miércoles, 13 de mayo de 2015

Proyecto Kinect: uso de LINQ to Entities

LINQ to Entities proporciona la capacidad de realizar consultas integradas en Language-Integrated Queries (LINQ) permitiendo escribir consultas contra el modelo conceptual de Entity Framework mediante los lenguajes Visual Basic o Visual C#. Las consultas con EF se representan mediante consultas de árboles de comandos, que se ejecutan en el contexto del objeto. LINQ to Entities convierte las consultas de LINQ en consultas de árboles de comandos, ejecuta las consultas en EF y devuelve objetos que se pueden usar tanto en EF como en LINQ.

Una operación de consulta de LINQ consta de tres acciones: obtener el origen o los orígenes de datos, crear la consulta y ejecutar la consulta.

En la consulta se especifica exactamente la información que se desea recuperar del origen de datos. Una consulta también puede especificar cómo se debe ordenar, agrupar y conformar esa información antes de que se devuelva. En LINQ, una consulta se almacena en una variable. Esta variable de consulta no realiza ninguna acción y no devuelve datos; solamente almacena la información de la consulta. Tras crear una consulta debe ejecutarla para recuperar los datos.

Las consultas de LINQ to Entities se pueden formular en dos sintaxis diferentes:
  • Sintaxis de expresiones de consulta.
  • Sintaxis de consultas basadas en métodos.
La sintaxis de expresiones de consulta consta de un conjunto de cláusulas escritas en una sintaxis declarativa similar a Transact-SQL. Al usar la sintaxis de consulta, se pueden realizar operaciones complejas de filtrado, clasificación, ordenación y agrupación en orígenes de datos con una cantidad mínima de código. En la siguiente imagen, se muestra un método que realiza una consulta completa, incluyendo el uso de un origen de datos, la definición de la expresión de consulta y la ejecución de la consulta por medio de una instrucción foreach:

Código C# con ejemplo de sintaxis de expresiones de consulta
La sintaxis de consultas basadas en métodos no son más que una secuencia de llamadas directas a los métodos de operador de LINQ, como son Where, Select, GroupBy, OrderBy, Join, Max, etc., a las que además se le deben pasar como parámetros expresiones lambda. En la siguiente imagen se puede ver un ejemplo de consulta utilizando expresiones Lambda.

Código C# con ejemplo de sintaxis de consultas basadas en métodos
En comparación, los dos tipos de sintaxis de LINQ son bastante simples, sin embargo para realizar las consultas en el proyecto se ha decidido utilizar la sintaxis de expresiones de consulta estándar, ya que no es necesario crear expresiones Lambda que podrían tornarse complejas cuando la consulta requiera de una mayor elaboración.

En el siguiente post, hablaremos de las librerías para la construcción de aplicaciones orientadas a servicios, Windows Communication Foundation (WCF).

¡Saludos!

Álvaro Alcolea