250 likes | 590 Views
LINQ { en profundidad }. Octavio Hernández Mentoring Team Leader Plain Concepts. Agenda. Introducción a LINQ Proveedores “predeterminados” Extendiendo LINQ a nuevos tipos de datos y librerías Recomendaciones de uso LINQ después de .NET 3.5 Demos. ¿Qué es LINQ?.
E N D
LINQ{en profundidad } Octavio Hernández Mentoring Team Leader Plain Concepts
Agenda • Introducción a LINQ • Proveedores “predeterminados” • Extendiendo LINQ a nuevos tipos de datos y librerías • Recomendaciones de uso • LINQ después de .NET 3.5 • Demos
¿Qué es LINQ? • Mecanismo uniforme y extensible para consultar fuentes de datos de diferentes tipos: las expresiones de consulta. • Sintaxis basada en nuevas palabras reservadas contextuales. • Semántica “enchufable”: los lenguajes no definen la semántica de las nuevas palabras reservadas, sino únicamente un conjunto de reglas para reescribir esas expresiones como cascadas de llamadas a métodos.
Expresiones de consulta var delMadrid = from f in DatosFutbol.Futbolistas where f.CodigoClub == “RMA" select new { f.Nombre, f.Edad }; var delMadrid = DatosFutbol.Futbolistas .Where(f => f.CodigoClub == “RMA") .Select(f => new { f.Nombre, f.Edad });
Expresiones de consulta Expresiones de consulta • Fuentes de consultas • Los datos provienen de cierta fuente, que implementa IEnumerable<T>. • Operadores de consulta estándar • No todos los operadores tienen un reflejo en la sintaxis de los lenguajes. • El patrón LINQ.
Expresiones de consulta Expresiones de consulta • Composicionales, jerárquicas • Anidamiento arbitrario. • Posibilidad de aplicar operadores adicionales. • Declarativas y no imperativas • Diga qué usted desea obtener, no cómo. • El cómo va por el proveedor. • Ejecución diferida • Las consultas se ejecutan solo a medida que sus resultados se solicitan.
Enchufando la semántica Basados en IEnumerable<T> Basados en IQueryable<T> Silverlight 2.0 .NET 3.5 .NET 3.5 CF
{LINQ en profundidad } demo LINQ to Objects, XML, SQL, Entities
<libro> <titulo/> <autor/> <precio/> </libro> XML BB.DD. Objetos Proveedores C# 3.0 VB 9.0 Otros… Proveedores LINQ Basados en IEnumerable<T> Basados en IQueryable<T> LINQ toDataSets LINQ toObjects (el suyo) LINQ toXML LINQ toSQL LINQ toEntities (el suyo)
Dos clases de proveedores Basados en IEnumerable<T> Basados en IQueryable<T>
Extendiendo LINQ • Habilite sus API existentes para LINQ • Específicamente para consultas en memoria. • Cree métodos extensores que devuelvan un objeto IEnumerable<T>. • Desarrolle su propio proveedor de consultas • Implemente IQueryable<T>. • Analice árboles de expresiones y traduzca nodos a código o a un lenguaje de consultas diferente.
{LINQ en profundidad } demo Proveedores “a medida”
Recomendaciones • Analice cuándo y cómo sus consultas se ejecutan • Momento de ejecución. • Ejecución local vs. remota. • Lugar/capa de ejecución real. • Mantenga las consultas dentro de ensamblados • No pase expresiones de consulta entre capas.
Recomendaciones (2) • Cuidado con los tipos anónimos! • Planifique de antemano qué tipos son importantes. • No abuse de las proyecciones. • Aprenda: • A escribir consultas con y sin la sintaxis. • Las nuevas características de C# 3.0 • Los detalles de la traducción de la sintaxis en llamadas a operadores y cómo funcionan éstos.
LINQ más allá de .NET 3.5 • Parallel LINQ • Pasa partes de una consulta a diferentes núcleos/procesadores. • Proveedores de consultas de terceros: • LINQ to Amazon, LDAP, SharePoint, NHibernate, MySql, Flickr, … y mucho más. • LINQ 2.0
Resumen • LINQ es un mecanismo uniforme y extensible para consultar fuentes de datos de diferentes tipos • LINQ cambiará la forma en que escribimos código. • Más declarativo • Muchos menos bucles “a la vista”. • Código más fácil de leer y mantener.
Más información • Centro de desarrollo C# de MSDN • http://msdn.microsoft.com/vcsharp/ • Mi libro, “C# 3.0 y LINQ” • http://www.krasispress.com/ • Revista dotNetManía • http://www.dotnetmania.com/
{Stand de PlainConcepts} • ¡Conócenos! • Pregúntanos tus dudas ¡Entra en el sorteo Y podrás ganar alguno de estos libros sobre .NET 3.5!
A continuación….. 26 febrero .16:00 Auditorio B Plenaria Evolución de la Plataforma de Servicios Windows Server 2008 para desarrolladores Hands On Labs en Sala Mónaco y entrega de libro de Visual Studio 2008 y Demos en Zona de Exposición.
© 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
Arquitectura Entidades Sistemas Externos Capa de Datos Relaciones Entidades SQL Server ADO .NET Data Services (“Astoria”) Relaciones Lógica de Negocio ADO.NET 2.0 Data Provider Modelo de Objetos (Datasets/Objetos) LINQ to Datasets LINQ to SQL Presentación LINQ to Objects ADO .NET 2.0 Data Providers LINQ to Entities Modelo Conceptual (EDM) ADO.NET Entity Framework (entitySQL) ADO.NET Entity Framework (Entity Data Model) Clientes LINQ to Objects Otras BDs