SlideShare una empresa de Scribd logo
1 de 23
DYNAMICS
.NET 4.0
SÉRGIO RODRIGUES GIRALDO
SERGIO.GIRALDO@ITAU-UNIBANCO.COM.BR
CARACTERÍSTICAS .NET
• Strongly typed – type safe
• Resolução de tipos é feita em compile time
• Plataforma auto-descrita(metadados)
WEAKLY TYPED CENARIOS
• CODEDOM
   • Ótima para geração de código-fonte
   • Abordagem independente de linguagem
• LCG (Lightweight Code Generator)
   • Requer conhecimento da semântica do código em IL
• Expression trees
   • Object model em tempo de execução
CODEDOM
LGC
EXPRESSION TREE
.NET 4.0: DYNAMIC KEYWORD
• Se um tipo é dynamic, significa que o binding e o dispatch
  sejam postergados (deferred) para o tempo de execução.


  int intFoo = 2;
  int intBar = 3;
  Console.WriteLine(intFoo + intBar);

  dynamic dynFoo = 2;
  dynamic dynBar = 3;
  Console.WriteLine(dynFoo + dynBar);
DUCK TYPE ?
Se caminha como um pato e faz quack como um pato
então ... é um pato !
DUCK TYPE? HUMM
NEM TANTO ;D
COMO PARECE NO CÓDIGO?
DYNAMIC, VAR, OBJECT
var: type é inferido do contexto




Object: type básico do CTS
dynamic: para o compilador é um object porém seu type
apenas será conhecido em runtime
ENTENDENDO ...
DECOMPILER ...
IL
IL
MAS COMO ELE
EXECUTA?
1. DLR
  1. Determinar variáveis e declarações dinâmicas
  2. Usar CallSite para determinar as expression trees
  3. Executa as trees




                                          http://dlr.codeplex.com
NA REAL
DECOMPILED
DECOMPILED
DECOMPILED
BINDER ?
BINDER !

Más contenido relacionado

Similar a Dynamics .NET 4.0

A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Develo...
A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Develo...A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Develo...
A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Develo...Rogério Moraes de Carvalho
 
Linux Embarcado para Dispositivos de IoT - Uninove 18/11/2017
Linux Embarcado para Dispositivos de IoT - Uninove 18/11/2017Linux Embarcado para Dispositivos de IoT - Uninove 18/11/2017
Linux Embarcado para Dispositivos de IoT - Uninove 18/11/2017Fernando Luiz Cola
 
Apresentação Introdução Typescript - .Net Caxias do Sul
Apresentação   Introdução Typescript - .Net Caxias do SulApresentação   Introdução Typescript - .Net Caxias do Sul
Apresentação Introdução Typescript - .Net Caxias do SulGlaucia Lemos
 
Sistemas Distribuídos - Comunicação Distribuída – CORBA
Sistemas Distribuídos - Comunicação Distribuída – CORBASistemas Distribuídos - Comunicação Distribuída – CORBA
Sistemas Distribuídos - Comunicação Distribuída – CORBAAdriano Teixeira de Souza
 
Palestra: Introdução à TypeScript & Features Ts 2.x
Palestra: Introdução à TypeScript & Features Ts 2.x Palestra: Introdução à TypeScript & Features Ts 2.x
Palestra: Introdução à TypeScript & Features Ts 2.x Glaucia Lemos
 
Embarcados Live - microROS: ROS2 no seu ESP32
Embarcados Live - microROS: ROS2 no seu ESP32Embarcados Live - microROS: ROS2 no seu ESP32
Embarcados Live - microROS: ROS2 no seu ESP32Embarcados
 
Funcionamento interno do node.js e boas práticas
Funcionamento interno do node.js e boas práticasFuncionamento interno do node.js e boas práticas
Funcionamento interno do node.js e boas práticasKirmayr tomaz
 
Swift na linha de comando
Swift na linha de comandoSwift na linha de comando
Swift na linha de comandoTales Andrade
 
Palestra FLISOL 2013 - Java + Arduino + Raspberry PI = Uma combinação perfeita
Palestra FLISOL 2013 - Java + Arduino + Raspberry PI = Uma combinação perfeitaPalestra FLISOL 2013 - Java + Arduino + Raspberry PI = Uma combinação perfeita
Palestra FLISOL 2013 - Java + Arduino + Raspberry PI = Uma combinação perfeitaWaelson Negreiros Nunes
 
Três anos de Scala em Produção: desafios, aprendizados e dores de cabeça
Três anos de Scala em Produção: desafios, aprendizados e dores de cabeçaTrês anos de Scala em Produção: desafios, aprendizados e dores de cabeça
Três anos de Scala em Produção: desafios, aprendizados e dores de cabeçaFelipe Hummel
 
Iron Python
Iron PythonIron Python
Iron Pythonpugpe
 
RIA e Flex - Dando formas à Inovação
RIA e Flex - Dando formas à InovaçãoRIA e Flex - Dando formas à Inovação
RIA e Flex - Dando formas à InovaçãoLeonardo Braga
 
OpenShift: NoSQL "a la carte" num PaaS 100% Open Source
OpenShift: NoSQL  "a la carte"  num PaaS 100% Open SourceOpenShift: NoSQL  "a la carte"  num PaaS 100% Open Source
OpenShift: NoSQL "a la carte" num PaaS 100% Open SourceEdgar Silva
 
TDC2018SP | Trilha Blockchain - Criando minha Primeira Blockchain Privada (DL...
TDC2018SP | Trilha Blockchain - Criando minha Primeira Blockchain Privada (DL...TDC2018SP | Trilha Blockchain - Criando minha Primeira Blockchain Privada (DL...
TDC2018SP | Trilha Blockchain - Criando minha Primeira Blockchain Privada (DL...tdc-globalcode
 
Palestra Tony Rodrigues - OctaneLabs WarpSpeed Project – Computação Forense e...
Palestra Tony Rodrigues - OctaneLabs WarpSpeed Project – Computação Forense e...Palestra Tony Rodrigues - OctaneLabs WarpSpeed Project – Computação Forense e...
Palestra Tony Rodrigues - OctaneLabs WarpSpeed Project – Computação Forense e...BHack Conference
 
Angular Extreme Performance
Angular  Extreme PerformanceAngular  Extreme Performance
Angular Extreme PerformanceGustavo Costa
 

Similar a Dynamics .NET 4.0 (20)

A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Develo...
A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Develo...A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Develo...
A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Develo...
 
Phpforandroid
PhpforandroidPhpforandroid
Phpforandroid
 
Linux Embarcado para Dispositivos de IoT - Uninove 18/11/2017
Linux Embarcado para Dispositivos de IoT - Uninove 18/11/2017Linux Embarcado para Dispositivos de IoT - Uninove 18/11/2017
Linux Embarcado para Dispositivos de IoT - Uninove 18/11/2017
 
Apresentação Introdução Typescript - .Net Caxias do Sul
Apresentação   Introdução Typescript - .Net Caxias do SulApresentação   Introdução Typescript - .Net Caxias do Sul
Apresentação Introdução Typescript - .Net Caxias do Sul
 
Sistemas Distribuídos - Comunicação Distribuída – CORBA
Sistemas Distribuídos - Comunicação Distribuída – CORBASistemas Distribuídos - Comunicação Distribuída – CORBA
Sistemas Distribuídos - Comunicação Distribuída – CORBA
 
Palestra: Introdução à TypeScript & Features Ts 2.x
Palestra: Introdução à TypeScript & Features Ts 2.x Palestra: Introdução à TypeScript & Features Ts 2.x
Palestra: Introdução à TypeScript & Features Ts 2.x
 
Jsummit 2014
Jsummit 2014Jsummit 2014
Jsummit 2014
 
Embarcados Live - microROS: ROS2 no seu ESP32
Embarcados Live - microROS: ROS2 no seu ESP32Embarcados Live - microROS: ROS2 no seu ESP32
Embarcados Live - microROS: ROS2 no seu ESP32
 
Funcionamento interno do node.js e boas práticas
Funcionamento interno do node.js e boas práticasFuncionamento interno do node.js e boas práticas
Funcionamento interno do node.js e boas práticas
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Swift na linha de comando
Swift na linha de comandoSwift na linha de comando
Swift na linha de comando
 
Palestra FLISOL 2013 - Java + Arduino + Raspberry PI = Uma combinação perfeita
Palestra FLISOL 2013 - Java + Arduino + Raspberry PI = Uma combinação perfeitaPalestra FLISOL 2013 - Java + Arduino + Raspberry PI = Uma combinação perfeita
Palestra FLISOL 2013 - Java + Arduino + Raspberry PI = Uma combinação perfeita
 
Três anos de Scala em Produção: desafios, aprendizados e dores de cabeça
Três anos de Scala em Produção: desafios, aprendizados e dores de cabeçaTrês anos de Scala em Produção: desafios, aprendizados e dores de cabeça
Três anos de Scala em Produção: desafios, aprendizados e dores de cabeça
 
JavaME - Aula 1
JavaME - Aula 1JavaME - Aula 1
JavaME - Aula 1
 
Iron Python
Iron PythonIron Python
Iron Python
 
RIA e Flex - Dando formas à Inovação
RIA e Flex - Dando formas à InovaçãoRIA e Flex - Dando formas à Inovação
RIA e Flex - Dando formas à Inovação
 
OpenShift: NoSQL "a la carte" num PaaS 100% Open Source
OpenShift: NoSQL  "a la carte"  num PaaS 100% Open SourceOpenShift: NoSQL  "a la carte"  num PaaS 100% Open Source
OpenShift: NoSQL "a la carte" num PaaS 100% Open Source
 
TDC2018SP | Trilha Blockchain - Criando minha Primeira Blockchain Privada (DL...
TDC2018SP | Trilha Blockchain - Criando minha Primeira Blockchain Privada (DL...TDC2018SP | Trilha Blockchain - Criando minha Primeira Blockchain Privada (DL...
TDC2018SP | Trilha Blockchain - Criando minha Primeira Blockchain Privada (DL...
 
Palestra Tony Rodrigues - OctaneLabs WarpSpeed Project – Computação Forense e...
Palestra Tony Rodrigues - OctaneLabs WarpSpeed Project – Computação Forense e...Palestra Tony Rodrigues - OctaneLabs WarpSpeed Project – Computação Forense e...
Palestra Tony Rodrigues - OctaneLabs WarpSpeed Project – Computação Forense e...
 
Angular Extreme Performance
Angular  Extreme PerformanceAngular  Extreme Performance
Angular Extreme Performance
 

Dynamics .NET 4.0