Siguiendo con mi idilio de esta semana con LINQ, voy a haceros un repaso de la situación actual y líneas futuras de evolución del mismo. [:)]
Como ya todos sabéis LINQ se encuentra todavía en fase beta. Las primeras versiones vieron la luz en Septiembre del 2005 (qué rápido pasa el tiempo). Desde entonces, ha evolucionado desde ser un simple add-in para Visual Studio 2005 hasta convertirse en parte intrínseca de la última versión del .Net Framework (3.5) y de la nueva versión del IDE, Visual Studio 2008.
Hablando del futuro, hay cosas que ya podemos afirmar sobre la versión estable de LINQ. Sabemos que incluirá directamente soporte para algunos dominios de datos:
LINQ sobre objetos
LINQ sobre ADO.Net, que a su vez supone el soporte para las siguientes tecnologías: LINQ para SQL, LINQ sobre entidades y LINQ sobre DataSets.
LINQ sobre XML.
No obstante, LINQ se puede extender para soportar otros dominios. Algunas extensiones podrían ser LINQ sobre Sharepoint (algo de lo que ya se ha hablado por geeks), LINQ sobre servidores de Exchange y LINQ sobre OLAP, entre otras muchas posibilidades… En realidad, alguna de estas posibilidades pueden ser ya directamente implementadas haciendo uso de Reflection combinado con LINQ sobre objetos.
Otra posible vía de evolución de LINQ es LINQ sobre SQL. Ya que, si bien las versiones beta sólo soportan bases de datos en SQL Server, podemos implementar proveedores de datos que nos permitan manipular cualquier base de datos relacional.
Además de todas estas posibilidades, indirectamente, LINQ puede suponer una revolución en la forma en que desarrollemos aplicaciones. ¿Qué? Bueno, es cierto que LINQ en sí mismo no supone un cambio en la arquitectura de una aplicación puesto que su objetivo es proporcionarnos una serie de herramientas para mejorar nuestros desarrollos permitiendo la adaptación a arquitecturas diversas, pero también lo es que LINQ puede llegar a afectar ciertas partes críticas de soluciones con arquitecturas de N-capas. Por ejemplo, imaginemos el uso de LINQ en un procedimiento almacenado de SQL-CLR, donde se produciría una transferencia de nuestra query integrada en el lenguaje al motor de SQL, en lugar de utilizar sentencias de SQL propias.
Podemos concluir resumiendo todo este rollo en que hay una gran variedad de posibles evoluciones implementables sobre LINQ, y no debemos olvidar que SQL es un estándar ampliamente aceptado y adoptado por lo que no se puede sustituir por otro así como así, por cuestiones de rendimiento. De todos modos, LINQ es un paso interesante en la evolución de los lenguajes de programación actuales. El carácter declarativo de su sintaxis hace que podamos considerar el uso de LINQ para otros propósitos diferentes al acceso a datos.
En esta última línea, existen proyectos de investigación como PLINQ (Parallel LINQ), que como su propio nombre indica se dedica a investigar acerca de las posibilidades de paralelización de código que se nos abren mediante el uso de LINQ en nuestros desarrollos. Se pueden ofrecer otros muchos servicios adicionales a los ya comentados.
Adentrarse en el conocimiento de LINQ hoy en día puede ser algo bonito e interesante, pero puede llegar a convertirse en imprescindible de aquí a un tiempo… [:)]
¿Aún no te has animado a probarlo?