cerrar-sesion editar-perfil marker video calendario monitor periodico fax rss twitter facebook google-plus linkedin alarma circulo-derecha abajo derecha izquierda mover-vertical candado usuario email lupa exito mapa email2 telefono etiqueta

3002008080408. La tecnologA�a LINQ: un avance revolucionario en la programaciA?n para .NET Framework

Escrito por Redacción en Artículos
no hay comentarios Haz tu comentario
Imagen de logotipo de facebook Imagen de logotipo de Twitter Imagen de Logotipo de Google+ Imagen de logotipo de Linkedin

El acrA?nimo LINQ ha sido extraA�do de Language Integrated Query, tA�rmino que se traduce como consultas integradas en el lenguaje, y que refleja fielmente el objetivo principal de las extensiones reciA�n incorporadas a los lenguajes antes mencionados: abrir ante los desarrolladores la posibilidad de expresar, de una manera uniforme e integrada, consultas contra las mA?s diversas fuentes de datos que A�stos utilizan en sus aplicaciones (colecciones de objetos en memoria, documentos XML o bases de datos relacionales, entre otras), mediante las expresiones de consulta, que constituyen el principal reflejo en los lenguajes de la tecnologA�a LINQ.


La parte superior de la figura 1 muestra un ejemplo tA�pico de una sentencia de asignaciA?n en C# que utiliza una expresiA?n de consulta integrada, en este caso basada en los datos de ejemplo que utilizo en mi libro (1). Lo mA?s importante aquA� es que, en dependencia del tipo del objeto Futbolistas, la sentencia recuperarA? los nombres y las edades de los futbolistas del Real Madrid de una colecciA?n en memoria, un documento XML, una base de datos de SQL Server u otra fuente diferente.

Las especificaciones de C# y Visual Basic estipulan que las expresiones de consulta son traducidas por los compiladores en una secuencia de llamadas a mA�todos conocidos como operadores de consulta estA?ndar, que diferentes proveedores de LINQ implementan, cada uno a su manera, para dotar a la fuente de datos especA�fica de posibilidades de proyecciA?n, selecciA?n (filtrado), agrupaciA?n u ordenaciA?n de datos, entre otras. En la parte inferior de la figura 1 se presenta precisamente la traducciA?n de la sentencia de la parte superior a sintaxis de llamadas a operadores (que, por otra parte, el programador puede utilizar directamente si desea).


Figura 1. ExpresiA?n de consulta y su traducciA?n en llamadas a mA�todos.

A?QuA� es LINQ?

Hablando mA?s formalmente, LINQ es una combinaciA?n de extensiones a los lenguajes y librerA�as de cA?digo manejado que permiten expresar de manera uniforme y extensible las consultas sobre secuencias de datos provenientes de las mA?s disA�miles fuentes. La figura 2 muestra la arquitectura a�?de alto nivela�? de LINQ.

Figura 2. Arquitectura de LINQ.

Las ventajas mA?s importantes que aporta LINQ al mundo de la programaciA?n son:
– LINQ permite reducir a una mA�nima expresiA?n el conocido problema del a�?desajuste de impedanciasa�? en la programaciA?n actual, provocado por las diferencias entre los modelos que proponen los lenguajes de propA?sito general (hoy predominantemente orientados a objetos) y los que ofrecen los lenguajes de consulta especA�ficos a fuentes de datos de diversa naturaleza, como SQL (en el caso de bases de datos relacionales) o XPath/XQuery (en el caso de documentos XML), y la necesidad hasta el momento de dominar varios de estos modelos para desarrollar con A�xito aplicaciones de acceso a datos. En particular, en el caso de LINQ to SQL y LINQ to Entities, los proveedores LINQ para consultar bases de datos relacionales, el proveedor es quien se encarga de generar las sentencias SQL a partir de las expresiones de consulta que utilicemos en nuestros programas.
– LINQ permite elevar el nivel de abstracciA?n y claridad de la programaciA?n. Actualmente, un programador que necesite acceder a una base de datos, por ejemplo, deberA? especificar en un plan meticuloso cA?mo recuperar los datos que necesita; las expresiones de consulta, en cambio, son una herramienta mucho mA?s declarativa, que permite en gran medida indicar A?nicamente quA� se desea obtener, dejando a un motor de evaluaciA?n de expresiones los detalles sobre cA?mo lograr ese objetivo.
– A la hora de expresar sus consultas, el programador podrA? aprovechar todas las facilidades que el compilador y el entorno integrado ofrecen, con importantes beneficios para la productividad. Las ventajas aquA� son de dos tipos diferentes:
-** Seguridad mejorada, gracias a la verificaciA?n de sintaxis y de tipos por parte de los compiladores. Por ejemplo, hasta el presente las sentencias SQL que incluA�amos en nuestras aplicaciones .NET pasaban sin validaciA?n de ningA?n tipo a la fase de ejecuciA?n.
-** Disponibilidad de ayuda IntelliSense dentro de Visual Studio 2008 u otros entornos de desarrollo.

Extensibilidad de LINQ

El otro elemento clave de la tecnologA�a LINQ (y que se refleja en la figura 2) es su arquitectura abierta, que hace posible la extensibilidad. La semA?ntica de los operadores que se utilizan en las expresiones de consulta no estA? en modo alguno a�?cableadaa�? en los lenguajes, sino que se define, como hemos mencionado antes, en proveedores, que no son mA?s que librerA�as creadas (por Microsoft o por terceros fabricantes) siguiendo un conjunto de especificaciones bien definidas con el objetivo de permitir las consultas sobre fuentes de datos especA�ficas.

Como parte de .NET Framework 3.5, Microsoft pone a nuestra disposiciA?n diferentes proveedores, que se presentan a continuaciA?n. Adicionalmente, ha comenzado a florecer una gran cantidad de proveedores a medida desarrollados por la comunidad, que hacen posible las consultas sobre fuentes de datos tan heterogA�neas como los repositorios de SharePoint o los servicios Web de Amazon.

Proveedores LINQ predefinidos

En funciA?n de la fuente de datos que se desee consultar, el programador deberA? a�?enchufara�? el proveedor correspondiente, agregando una referencia al ensamblado en el que dicho proveedor estA? implementado. La tabla de la figura 3 lista los proveedores LINQ incorporados a�?de seriea�? a .NET Framework 3.5: LINQ to Objects, para consultar arrays y colecciones de objetos en memoria, LINQ to XML, para consultar y actualizar documentos XML, LINQ to DataSets, para consultar y actualizar conjuntos de datos (objetos de la clase DataSet), y LINQ to SQL y LINQ to Entities (A�ste A?ltimo aA?n no disponible; lo estarA? prA?ximamente), para consultar y actualizar bases de datos relacionales.

La tabla muestra tambiA�n cuA?les de esas tecnologA�as estA?n tambiA�n disponibles en las versiones a�?reducidasa�? de .NET: para dispositivos mA?viles (.NET Compact Framework) y para el venidero a�?plug-ina�? para pA?ginas Web, Silverlight 2.0.

Hay que destacar ademA?s que la mayor parte de estas tecnologA�as, si bien tienen la implementaciA?n de consultas como objetivo central, tambiA�n ofrecen facilidades para la actualizaciA?n (inserciA?n, modificaciA?n y borrado) de datos, lo que las convierte en verdaderas API de propA?sito general, capaces en buena medida de reemplazar a las facilidades que estaban disponibles hasta el momento para esas tareas.

Figura 3. Proveedores LINQ predeterminados.

ConclusiA?n

En este artA�culo hemos introducido los conceptos fundamentales relacionados con LINQ (su definiciA?n, objetivos y arquitectura), y presentado los recursos lingA?A�sticos y de librerA�as asociados a esta revolucionaria tecnologA�a, que sin duda alguna ya ha empezado a cambiar nuestra forma de desarrollar aplicaciones. Las lA?gicas limitaciones de espacio no nos permiten profundizar mA?s aquA� en estos temas; el lector interesado podrA? encontrar toda la informaciA?n necesaria en mi libro (1).

BibliografA�a

HernA?ndez, Octavio a�?C# 3.0 y LINQa�?, Krasis Press, noviembre de 2007, pA?gs. 320. 

Etiquetas

Noticias relacionadas

Comentarios

No hay comentarios.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Debes haber iniciado sesión para comentar una noticia.