Octavio Hernández Mentoring Team Leader Plain Concepts.

24

Transcript of Octavio Hernández Mentoring Team Leader Plain Concepts.

Page 1: Octavio Hernández Mentoring Team Leader Plain Concepts.
Page 2: Octavio Hernández Mentoring Team Leader Plain Concepts.

Octavio HernándezMentoring Team LeaderPlain Concepts

Page 3: Octavio Hernández Mentoring Team Leader Plain Concepts.

Introducción a LINQProveedores “predeterminados”Extendiendo LINQ a nuevos tipos de datos y libreríasRecomendaciones de usoLINQ después de .NET 3.5Demos

Page 4: Octavio Hernández Mentoring Team Leader Plain Concepts.

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.

Page 5: Octavio Hernández Mentoring Team Leader Plain Concepts.

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 });

Page 6: Octavio Hernández Mentoring Team Leader Plain Concepts.

Fuentes de consultasLos datos provienen de cierta fuente, que implementa IEnumerable<T>.

Operadores de consulta estándarNo todos los operadores tienen un reflejo en la sintaxis de los lenguajes. El patrón LINQ.

Page 7: Octavio Hernández Mentoring Team Leader Plain Concepts.

Restricción Where

Proyección Select, SelectMany

Ordenación OrderBy, ThenBy

Agrupación GroupBy

Encuentros Join, GroupJoin

Cuantificadores Any, All

Partición Take, Skip, TakeWhile, SkipWhile

Conjuntuales Distinct, Union, Intersect, Except

Un elemento First, Last, Single, ElementAt

Agregados Count, Sum, Min, Max, Average

Conversión ToArray, ToList, ToDictionary

Conversión de elementos OfType<T>, Cast<T>

Page 8: Octavio Hernández Mentoring Team Leader Plain Concepts.

Composicionales, jerárquicasAnidamiento arbitrario.Posibilidad de aplicar operadores adicionales.

Declarativas y no imperativasDiga qué usted desea obtener, no cómo.El cómo va por el proveedor.

Ejecución diferidaLas consultas se ejecutan solo a medida que sus resultados se solicitan.

Page 9: Octavio Hernández Mentoring Team Leader Plain Concepts.

Basados en IEnumerable<T> Basados en IQueryable<T>

Tecnología

EnsambladoEspacio de nombres

LINQ to Objects

System.Core.dll System.Linq

LINQ to XML

System.Xml.Linq.dll System.Xml.Linq

LINQ to DataSet

System.Data.DataSetExtensions.dll

System.Data

LINQ to SQL

System.Data.Linq.dll System.Data.Linq

LINQ to Entities

System.Data.Entity.dllSystem.Data.Objec

ts y otros

Silverlight 2.0

.NET 3.5 CF.NET 3.5

Page 10: Octavio Hernández Mentoring Team Leader Plain Concepts.

LINQ to Objects, XML, SQL, Entities

Page 11: Octavio Hernández Mentoring Team Leader Plain Concepts.

<libro> <titulo/> <autor/> <precio/></libro>

XML

Proveedores LINQ

C# 3.0 VB 9.0 Otros…

LINQ toObjects

LINQ toSQL

LINQ toXML

LINQ toEntities

LINQ toDataSets

Basados en IEnumerable<T> Basados en IQueryable<T>

(el suyo)

(el suyo)

Page 12: Octavio Hernández Mentoring Team Leader Plain Concepts.

Basados en IEnumerable<T> Basados en IQueryable<T>

Basados en IEnumerable<T>

Basados enIQueryable<T>

Interfaz IEnumerable<T> IQueryable<T>

Ejecución Local, en memoria Usualmente remota

Implementación IteradoresAnálisis de árboles de

expresiones

ProveedoresLINQ to Objects

LINQ to XMLLINQ to DataSet

LINQ to SQLLINQ to Entities

Mis ejemplosLINQ to PipesLoggingLINQ

LINQ to TFS

Page 13: Octavio Hernández Mentoring Team Leader Plain Concepts.

Habilite sus API existentes para LINQEspecí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.

Page 14: Octavio Hernández Mentoring Team Leader Plain Concepts.

Proveedores “a medida”

Page 15: Octavio Hernández Mentoring Team Leader Plain Concepts.

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.

Page 16: Octavio Hernández Mentoring Team Leader Plain Concepts.

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.0Los detalles de la traducción de la sintaxis en llamadas a operadores y cómo funcionan éstos.

Page 17: Octavio Hernández Mentoring Team Leader Plain Concepts.

Parallel LINQPasa 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

Page 18: Octavio Hernández Mentoring Team Leader Plain Concepts.

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 declarativoMuchos menos bucles “a la vista”.Código más fácil de leer y mantener.

Page 19: Octavio Hernández Mentoring Team Leader Plain Concepts.

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/

Page 20: Octavio Hernández Mentoring Team Leader Plain Concepts.

¡Conócenos!

Pregúntanos tus dudas

¡Entra en el sorteoY podrás ganar

alguno de estos libros sobre

.NET 3.5!

Page 21: Octavio Hernández Mentoring Team Leader Plain Concepts.

Plenaria

Evolución de la Plataforma de Servicios Windows Server 2008 para

desarrolladoresHands On Labs en Sala Mónaco y entrega de libro de Visual Studio 2008 y Demos en Zona de Exposición.

Page 22: Octavio Hernández Mentoring Team Leader Plain Concepts.

© 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.

Page 23: Octavio Hernández Mentoring Team Leader Plain Concepts.
Page 24: Octavio Hernández Mentoring Team Leader Plain Concepts.

Sistemas Externos

Capa de Datos

Presentación

Lógica de Negocio

Modelo Conceptual

(EDM)Entidad

esRelaciones

Modelo de Objetos

(Datasets/Objetos)Entidad

esRelaciones