martes, julio 13, 2010

Introducción a LINQ parte 2 (Arquitectura)

En esta ocasión veremos los conceptos en los que se basa LINQ y los cambios que se han hecho en VB y C# para darle soporte.

La mayoría de nosotros hemos usado lenguajes de un dominio específico ( DSLs – Domain-Specific Languages). Estos son lenguajes diseñados para un dominio específico como procesadores de palabras (macros), bases de datos relacionales (SQL), WebBrowsers (Javascript), etc. Gran variedad de estos lenguajes son implementados a través de generadores de código gráfico y wizards. Las herramientas que liberó Microsoft para Visual Studio 2005 y Visual Studio 2008 para dominios específicos como Aplicaciones Web, SmartClients, Mobile se basan en el concepto de DSLs. (Software Factories)

Por ejemplo SQL es un lenguaje para un dominio especifico que tiene que ver con la manipulación de datos en una base de datos relacional, y para este hay varios sabores o implementaciones como T-SQL (Microsoft), PL/SQL (Oracle), a estos lenguajes se les denomina DSQLs.

El problema con todos estos lenguajes es que en la gran mayoría de los casos las aplicaciones que desarrollamos necesitan de alguna manera manipular datos almacenados en algún motor de base de datos por lo que debemos conocer SQL y nuestro lenguaje de propósito general como VB o C# y traducir nuestras sentencias del lenguaje de programación a “otro lenguaje”. Lo que nos resta productividad y nos causa problemas. De allí que el grupo de LINQ se enfocó en tratar de resolver este problema.

Como lo describió el arquitecto de C# “LINQ es un modelo de programación para consultar, transformar y agrupar cualquier tipo de dato que comúnmente se manipula en una aplicación intensiva de datos , ya sea un objeto, relacional o XML”.

Aunque LINQ no es un DSQL, existen varias implementaciones de LINQ para dominios específicos como:

LINQ to Objects:

La implementación default, que permite hacer consultas a objetos en memoria.

LINQ to SQL:

Para consultas de SQL Server, incluye un diseñador DSL gráfico y una herramienta O/RM.

LINQ to DataSet:

Para consultar ADO.Net DataSet tipados y no tipados.

LINQ to XML:

Para consultar documentos XML.

LINQ to Entities:

Para consultar EntitySets definidos en un Entitity Data Model en Entity Framework.

LINQ es el responsable de las extensiones hechas a los lenguajes en Visual Studio 2008. En el siguiente artículo veremos en detalle los cambios hechos a C# 3.0 y VB 9.0 por el momento menciono la lista de cambios:

  • Variables Implícitas
  • Inicializadores de Objetos
  • Inicializadores de Arreglos
  • Inicializadores de Colecciones
  • Tipos Anónimos
  • Métodos de Extensión
  • Expresiones Lambda
  • Operadores Estándar de Consulta
  • Expresiones de Consulta
  • Arboles de Expresión

LINQ también se basa en características de C# 2.0 y VB 8.0 como:

  • Tipos Genéricos
  • Métodos Anónimos
  • Iteradores

Hasta la próxima.

No hay comentarios.:

Publicar un comentario