Вы находитесь на странице: 1из 42

http://netponto.

org
10 Reunio Presencial 15/05/2010
Tudo o que sempre quis saber sobre LINQ
Srgio Amendoeira
Srgio Amendoeira
Arquitecto de Solues na Tecnocom Portugal.
Responsvel pelo desenvolvimento de diversas
Arquitecturas de Referncia para aplicaes da
Tecnocom em tecnologias Microsoft.
Membro do Grupo de Arquitectura de Software
(GASP)
Speaker nos eventos TechDays (2005 e 2007,
2010).
Agenda
Introduo
LINQ - Como funciona?
LINQ sobre objectos em memria
LINQ sobre dados externos
LINQ to Anything
Parallel LINQ

Tambm disponvel em vdeo...
Assista!
http://www.vimeo.com/15022564
Introduo
Introduo
Introduo
Qual a linguagem mais utilizada para realizar queries sobre dados
relacionais?
Introduo
Qual a linguagem mais utilizada para realizar queries sobre dados
relacionais?
Introduo
Podemos pesquisar sobre qualquer tipo de objecto?

IEnumerable<T>

- List<T>
- Arrays
- Ancestors<T>
- Descendants<T>
- ...
IQueryable<T>

- Table<T>
- ...
Dados em Memria
Dados Externos
LINQ Como Funciona
Traduo Sinttica
Expresses Lambda
LINQ Como funciona?
Mtodos de Extenso
LINQ Como funciona?
Lambdas
como
Delegates
LINQ Como funciona?

Tipos
Annimos
Varivel de
Tipo
Implcito
LINQ Como funciona?
1 2 3 4 5
Delayed
Execution



LINQ (Objectos em Memria)
Cdigo-fonte disponvel para download:
http://netponto.codeplex.com/releases/view/46929
LINQ to SQL
LINQ to SQL Como funciona?
Lambdas
como
Expression
Trees
==
. Lisboa
bar Localidade
.
bar Nome
LINQ to SQL Como funciona?
LINQ to SQL Como funciona?
Transformao
efectuada aqui
LINQ to SQL
Cdigo-fonte disponvel para download:
http://netponto.codeplex.com/releases/view/46929
LINQ to Anything
Dados Em Memria

- IEnumerable<T>

- Where
- ...
Dados Externos

- IQueryable<T>
- IOrderedQueryable<T>
-Suportar OrderBy
- IQueryProvider
Podemos pesquisar sobre qualquer objectos?

LINQ to Anything (IEnumerable)
Cdigo-fonte disponvel para download:
http://netponto.codeplex.com/releases/view/46929
LINQ to Anything (IQueryable<T>)
LINQ to Sharepoint
LINQ to Entities
LINQ to Google
dotConnect
LINQ to Oracle, MySQL, PostgreSQL, and SQLite
LINQ to CSV
LINQ to Wikipedia
LINQ to Twitter
...

Parallel LINQ
Dados Em Memria

- ParallelQuery<T>
Parallel LINQ
Dados Em Memria

- ParallelQuery<T>
Parallel LINQ


Paralelizao de queries, mas apenas se PLINQ achar que se
ganha algo por correr em paralelo.
Override com
.WithExecutionMode(ParallelExecutionMode)
Usa todos os processadores at ao mximo de 64
Override com .WithDegreeOfParallelism(int)
Preservao de ordenao de origem
Default sem preservao (.AsUnordered()) mas override
com .AsOrdered()





Parallel LINQ


Saltar entre processamento Paralelo e Sequencial





ParallelQuery<T> IEnumerable<T>
.AsSequential()
.AsParallel()
Parallel LINQ


Merge das threads de PLINQ depende de operadores mas
pode ser forado (.WithMergeOptions(ParallelMergeOptions))
NotBuffered





1
2
3
4
5
6
7
8
Parallel LINQ


AutoBuffered





1
2
3
4
5
6
7
8
Parallel LINQ


FullBuffered





1
2
3
4
5
6
7
8
Parallel LINQ

.ForAll(Action<T>) = foreach em paralelo (sem merge de
threads)





1
2
3
4
5
ForEach
Parallel LINQ

.ForAll(Action<T>) = foreach em paralelo (sem merge de
threads)





1
2
3
4
5
ForAll
Parallel LINQ
Tratamento de mltiplas excepes - AggregateException





1
2
3
4
Parallel LINQ
Tratamento de mltiplas excepes - AggregateException





1
2
3
4
AggregateException
LINQ Concluses
Type Safe

Sintaxe comum sobre vrias (qualquer) data source

Altamente Extensvel (desde simples a extremamente
complexo)

Funcionalidades de suporte podem ser usadas
individualmente

PLINQ evolui para Multi-Processador





LINQs
Query Comprehensions
http://msdn.microsoft.com/en-us/magazine/cc163378.aspx
101 LINQ Samples
http://msdn.microsoft.com/en-us/vcsharp/aa336746.aspx
LINQ to XML
http://msdn.microsoft.com/en-us/library/bb387098.aspx
LINQ to SQL
http://msdn.microsoft.com/en-us/library/bb425822.aspx
LINQ to SQL Debug Visualizer
http://weblogs.asp.net/scottgu/archive/2007/07/31/linq-to-sql-debug-visualizer.aspx
Parallel LINQ
http://msdn.microsoft.com/en-us/library/dd460688.aspx
Download
Download do cdigo-fonte das demonstraes desta apresentao:
http://netponto.codeplex.com/releases/view/46929
Srgio Amendoeira
Arquitecto de Solues na Tecnocom Portugal.
Responsvel pelo desenvolvimento de diversas
Arquitecturas de Referncia para aplicaes da
Tecnocom em tecnologias Microsoft.
Membro do Grupo de Arquitectura de Software
(GASP)
Speaker nos eventos TechDays (2005 e 2007,
2010).
Questes?
Patrocinadores desta reunio
Paulo Morgado
Prximas reunies presenciais
15/05/2010 - Maio
19/06/2010 - Junho
26/06/2010 - Junho (Porto?)
10/07/2010 - Julho
14/08/2010 - Agosto
Reserva estes dias na agenda! :)
Obrigado!
Srgio Amendoeira
sergio.amendoeira@tecnocom.pt

Вам также может понравиться