Arquitetura[.net]

1,366 views

Published on

Published in: Technology
  • Be the first to comment

Arquitetura[.net]

  1. 1. Dev Arquitetura da 2011 in Plataforma .Net FrameworkCachu CLR, CLS, CTS, IL, J#, Metadados, Windows, DLL, Console, JIT , MSCorEE, _CorExeMain, JMP, idasm, WebService, ECMA, SSCLI, PE, Assembly, VES, Thread, Exeção, Gabage Collector, SO, CPU, ilasm, csc, module, member, public, COM, linkeditor, AL.exe, C#, VB,Fortran andre.lopes@studentpartners.com.br
  2. 2. Arquitetura da plataforma .Net FrameworkIniciativa .NET 2002 Serviços Web Baseados em XML .Net Framework 1996 1998 Internet Internet 1ª Geração 2ª Geração IE/IIS WinDNA1992Cliente/Servidor Win32 andre.lopes@studentpartners.com.br
  3. 3. Arquitetura da plataforma .Net FrameworkIniciativa .NET  Web Service  Aplicação programável, acessada como um componente via protocolos Web padrões  Um consumidor do Web Service pode ser qualquer dispositivo  Protocolos abertos de internet Descrição dos Serviços Documento Aplicação WSDL Web Cliente Invoca o Serviço Service Resposta andre.lopes@studentpartners.com.br
  4. 4. Arquitetura da plataforma .Net FrameworkIniciativa .NET  Web Service - Benefícios  Escolha entre fazer ou comprar  Minimiza tempo de desenvolvimento e custo  Permite integração entre aplicações, plataformas e negócios andre.lopes@studentpartners.com.br
  5. 5. Arquitetura da plataforma .Net FrameworkIniciativa .NET  .Net é um framework para desenvolvimento de aplicações baseadas em janelas e internet  Coleção de tecnologias (Web Pages, Web Services, WPF, WCF, ...)  Independente de SO (IL)  Interação entre diferentes linguagens  Interoperabilidade com componentes já existentes andre.lopes@studentpartners.com.br
  6. 6. Arquitetura da plataforma .Net Framework Iniciativa .NET ModuloA.cs ModuloB.vbRepresentação Intermédia Interoperabilidade ModuloA.dll ModuloB.dll entre linguagens Windows Windows Portabilidade XP CE andre.lopes@studentpartners.com.br
  7. 7. Arquitetura da plataforma .Net FrameworkIniciativa .NET  Web Services XML  Web Forms  GUI Win32  CUI Win32  Serviços  Utilitários  Componentes Isolados andre.lopes@studentpartners.com.br
  8. 8. Arquitetura da plataforma .Net FrameworkIniciativa .NET  NormalizaçãoPadronização  ECMA 335 ISO/IEC 23271:2003  SSCLI andre.lopes@studentpartners.com.br
  9. 9. Arquitetura da plataforma .Net FrameworkConceitos Importantes CLR IL Metadados PE Assembly andre.lopes@studentpartners.com.br
  10. 10. Arquitetura da plataforma .Net FrameworkCommon Language Runtime  Gerencia o código em execução • Gerenciamento de Threads • Gerenciamento de Memória  Máquina Virtual .NET (VES)  Multi Linguagem • O CLR não sabe em qual linguagem o código foi escrito • IL  Provedor de recursos • Tratamento de Erros • Threads • Exceções andre.lopes@studentpartners.com.br
  11. 11. Arquitetura da plataforma .Net FrameworkCommon Language Runtime .Net Framework (1.0, 2.0, 3.0, 3.5, 4.0) Classes Fundamentais Common Language Runtime Código Nativo Gerenciador Compilador de Código Coletor de de IL em Lixo Carregador de Classes andre.lopes@studentpartners.com.br
  12. 12. Arquitetura da plataforma .Net FrameworkCommon Language RuntimeCódigo Gerenciado (.NET) Common Language RuntimeSolicita um recurso existenteWin 32/64 SO andre.lopes@studentpartners.com.br
  13. 13. Arquitetura da plataforma .Net FrameworkDemonstração Classesdo .Net Framework que acessam diretamente recursos da CLR andre.lopes@studentpartners.com.br
  14. 14. Arquitetura da plataforma .Net FrameworkIntermediate Language  Nível intermediário • Manipula Arrays diretamente • Manipula objetos e seus métodos • Não existe conceito de registrador  Independente de CPU  Código gerenciado pelo CLR  ilasm.exe  ildasm.exe  Dispõe de TODOS os recursos do CLR andre.lopes@studentpartners.com.br
  15. 15. Arquitetura da plataforma .Net Framework Intermediate Language  Trabalha com o conceito de pilhasHello.il.assembly extern mscorlib {}.assembly HelloWord{ .ver 1:0:1:1}.module HelloWord.exe.method static void Main() cil managed{ .maxstack 1 .entrypoint ldstr “Hello World” call void [mscorlib]System.Console::WriteLine(string) ret} andre.lopes@studentpartners.com.br
  16. 16. Arquitetura da plataforma .Net FrameworkIntermediate Language  Para compilar um código em IL C:>ilasm.exe Hello.il  Para verifica o código fonte em IL de qualquer aplicação em .Net C:>ildasm.exe Hello.exe /out=HelloInfo.txt  Ambas ferramentas estão disponíveis no SDK do .Net Framework andre.lopes@studentpartners.com.br
  17. 17. Arquitetura da plataforma .Net FrameworkMetadata  Informação sobre os tipos, vinculados a um EXE ou DLL  Conjunto de tabelas de dados que descrevem o que está definido no módulo, seus tipos e membros  Conjunto de tabelas que descrevem oque esta sendo usado pelo módulo - tipo externos, importados. Pessoa.dll Membro Tipo Acesso Tipo Assembly Nome string publico string mscorlib.dll DataNasc DateTime privado DateTime System.dll Idade Int32 publico Int32 mscorlib.dll ... ... ... ... ... andre.lopes@studentpartners.com.br
  18. 18. Arquitetura da plataforma .Net FrameworkMetadata  Utilidades • Eliminam a necessidade de arquivos de cabeçalho • IntelliSense • Código Seguro • Serialização • Coletor de Lixo andre.lopes@studentpartners.com.br
  19. 19. Arquitetura da plataforma .Net FrameworkMetadata  Obtendo metadados com C#using System;using System.Reflection;static void Main(string[] args){ Assembly mscorlib = Assembly.Load(“mscorlib.dll”); foreach(Type tipo in mscorlib.GetTypes()) { Console.WriteLine(tipo.Name); foreach(MemberInfo membro in tipo.GetMembers()) { Console.WriteLine(membro.Name); } }} andre.lopes@studentpartners.com.br
  20. 20. Arquitetura da plataforma .Net FrameworkPE  Portable Executable  Formato de arquivo executável, objeto e DLL  Desenvolvido pela Microsoft e padronizado em 1993  Padrão do Windows  Portável – não está vinculado a nenhum sistema específico, embora seja somente usado no Windows  Dividido em seções - Código - Recursos - Dados - Exportação - Importação - etc andre.lopes@studentpartners.com.br
  21. 21. Arquitetura da plataforma .Net FrameworkPE  Partes de um módulo gerenciado Parte Descrição Cabeçalho PE Identifica se é um arquivo CUI, GUI ou DLL. Tem também a Data/Hora de Criação Cabeçalho CLR Contém informações (interpretadas pelo CLR e por utilitários) que fazem dele um módulo gerenciado Metadados Tabelas de metadados. Tabelas de tipos definidos e Tabelas de tipos referenciados. Código em IL Código que o compilador produziu quando compilou o código fonte. andre.lopes@studentpartners.com.br
  22. 22. Arquitetura da plataforma .Net FrameworkAssembly  Agrupamento lógico de um ou mais módulos gerenciados ou arquivos de recursos  Menor unidade de reutilização, segurança e controle de versão  Pode conter um ou mais arquivos (linkeditor do assembly, AL.exe)  Arquivo EXE ou Dll. Projeto. andre.lopes@studentpartners.com.br
  23. 23. Arquitetura da plataforma .Net FrameworkAssembly Módulo gerenciado Assembly (IL e metadados) Ferramenta que combina múltiplos Módulo gerenciado módulos gerenciados (IL e metadados) e arquivos de recursos em um Manifesto: . assembly . descreve o . conjunto de Compilador C# arquivos no (csc.exe) assemblyArquivos de recursos Compilado VB(jpeg, .gif, .html, etc) (vbc.exe) Assembly LinkerArquivos de recursos (al.exe)(jpeg, .gif, .html, etc) . . . andre.lopes@studentpartners.com.br
  24. 24. Arquitetura da plataforma .Net FrameworkFuncionamento Compilação Carregamento Execução andre.lopes@studentpartners.com.br
  25. 25. Arquitetura da plataforma .Net FrameworkCompilação Arquivo de Arquivo de Arquivo de Código Fonte C# Código Fonte VB Código Fonte J# Compilador Compilador Compilador C# VB J# Metadata IL Arquivo PE Recursos andre.lopes@studentpartners.com.br
  26. 26. Arquitetura da plataforma .Net FrameworkCompilação  MSCorEE.dll  Uma referência é feita na seção .idata do arquivo para MSCorEE.dll  O Compilador automaticamente insere uma chamada para função _CorExeMain, na seção .text, para o CLR ser inicializado quando executarmos o assembly andre.lopes@studentpartners.com.br
  27. 27. Arquitetura da plataforma .Net FrameworkCarregamento  Passos, arquivo exe 1. O arquivo .exe é chamado 2. O Windows carrega o arquivo normalmente, como um não gerenciado. 3. Ao encontrar a chamada para MSCorEE.dll, a função _CorExeMain chama o CLR 4. Caso o CLR já esteja em execução ( alguma outra aplicação gerenciada já está aberta ) o processo atual é adicionado ao CLR, caso contrário o CLR é iniciado 5. O CLR toma conta do processo daqui em diante 6. O CLR localiza o ponto de entrada da aplicação – método Main – e inicia sua execução. andre.lopes@studentpartners.com.br
  28. 28. Arquitetura da plataforma .Net FrameworkCarregamento A thread primária do Processo é inicializada EXE gerenciado Espaço de Cabeçalho PE endereçamento JMP _CorExeMain Seção .text EXE gerenciado Seção .idata DLL: MSCorLib.dll Cabeçalho CLR Função: _CorExeMain IL MSCorEE.dll Metadados1. O MSCorEE examina o cabeçalho CLR para obter o token de metadados do método Main.2. O MSCorEE examina os metadados de Main para obter a localização da IL dentro do arquivo EXE.3. O MSCorEE compila a IL de Main para código nativo de CPU.4. O MSCorEE desvia para o código nativo de CPU de Main ( utilizando a thread principal ) – a aplicação é executada. andre.lopes@studentpartners.com.br
  29. 29. Arquitetura da plataforma .Net FrameworkCarregamento  Passos, arquivo dll • O processo é o mesmo usado no arquivos .exe, com algumas diferenças sutis • _CorDllMain, ao invéz de _CorExeMain • Inicializa a CLR • Volta para a aplicação que referenciou a Dll (Essa aplicação pode ser gerenciada ou não) andre.lopes@studentpartners.com.br
  30. 30. Arquitetura da plataforma .Net FrameworkExecução 1. Verificação de tipo 2. Cria uma entrada (endereço fictício de memória) para cada tipo. 3. JITCompiler pega a IL do método com base nos metadados 4. JITCompiler compila a instrução para código nátivo de CPU (código otimizado) 5. JITCompiler grava a instrução em um endereço de memória andre.lopes@studentpartners.com.br
  31. 31. Arquitetura da plataforma .Net FrameworkExecução 6. JITCompiler retorna o endereço para o CLR, que substitui o endereço fictício criado no passo 2. 7. CLR manda executar o código que está na área de memória especificada 8. CLR obtém a próxima instrução 9. CLR verifica se a instrução já foi compilada pelo JIT 9-1. Caso tenha sido, volta para 7. 9-2. Caso não tenha sido, volta para - JITCompiler. andre.lopes@studentpartners.com.br
  32. 32. Arquitetura da plataforma .Net Framework Execução EXE gerenciado Consolestatic void Main(){ Console.WriteLine(“Olá”); Console.WriteLine(“Tchau”); static void WriteLine(string);} JITCompiler MSCorEE.dll 1. No Assembly que implementa o tipo (Console), procure nos metadados o método (WriteLine) que está sendo chamado. 2. A partir dos metadados, obtenha o código IL para esse método 3. Aloque um bloco de memória 4. Compile a IL em instruções nativas de CPU; 5. Modifique a entrada do método na tabela, de modo que agora ele aponte para o bloco de memória alocado em 3 6. Desvie para o código nativo contido no bloco de memória andre.lopes@studentpartners.com.br
  33. 33. Arquitetura da plataforma .Net Framework Execução EXE gerenciado Consolestatic void Main(){ Console.WriteLine(“Olá”); Console.WriteLine(“Tchau”); static void WriteLine(string);} JITCompiler MSCorEE.dll1. No Assembly que implementa o tipo (Console), procure nos metadados o método (WriteLine) que está sendo chamado.2. A partir dos metadados, obtenha o código IL para esse método3. Aloque um bloco de memória4. Compile a IL em instruções nativas de CPU; o código nativo é salvo no bloco alocado em 35. Modifique a entrada do método na tabela, de modo que agora ele aponte para o bloco de memória alocado em 36. Desvie para o código nativo contido no bloco de memória andre.lopes@studentpartners.com.br
  34. 34. Arquitetura da plataforma .Net FrameworkExecução  Perca de desempenho com o JITCompiler  Código nativo gerado para uma arquitetura específica, processado onde o código está sendo executado • Se for um Pentium 4, por exemplo, o JIT vai poder usar recursos específicos dessa arquitetura • Otimização de código If(numeroDeCPUs > 1) { … } • Em um computador com somente uma CPU o código acima não séria nem compilado andre.lopes@studentpartners.com.br
  35. 35. Arquitetura da plataforma .Net FrameworkSolicitações ASP.NET Servidor IIS andre.lopes@studentpartners.com.br
  36. 36. Arquitetura da plataforma .Net FrameworkSolicitações ASP.NET Após a solicitação chegar no servidor IIS ela é mapeada, dependendodo seu tipo  aspx  asmx  asax  etc Cada tipo de solicitação tem um DLL ISAPI apropriada O IIS examina a solicitação e cria um bloco de informações do tipoEXTENSION_CONTROL_BLOCK O IIS chama a função HttpExtensionProc da dll ISAPI atual e passaa estrutura mencionada acima andre.lopes@studentpartners.com.br
  37. 37. Arquitetura da plataforma .Net FrameworkSolicitações ASP.NET A dll ISAPI compila a página solicitada e devolve o resultado para oIIS Por sua vez o IIS retorna o código HTML para o browser Do mesmo modo que o CLR compila dll’s e exe’s a dll ISAPI faz comas páginas aspx  Caso a mesma página seja chamada novamente, a compilação não acontece, no ASP clássico isso acontecia andre.lopes@studentpartners.com.br
  38. 38. Arquitetura da plataforma .Net FrameworkInteroperabilidade  Linguagens diferentes • C# é case sensitive • VB é case insensitive • C# tem inteiro sem sinal • VB não tem inteiro sem sinal • etc  Para linguagens diferentes poderem interoperar só podem ser usados os recursos comuns  CLS andre.lopes@studentpartners.com.br
  39. 39. Arquitetura da plataforma .Net FrameworkInteroperabilidade CLRCTS C# VB CLS Fortran andre.lopes@studentpartners.com.br
  40. 40. Arquitetura da plataforma .Net FrameworkInteroperabilidade [assembly: CLSCompliant(true)] public class Pessoa { public Pessoa() { } public UInt32 Idade {get; set;} public string Nome {get; set;} private UInt64 ObtemClassificacao(){ return 1; } public void Verifica() { } public void verifica() { } } andre.lopes@studentpartners.com.br
  41. 41. Arquitetura da plataforma .Net FrameworkInteroperabilidade [assembly: ComVisible(true)]  Exporta a biblioteca em um formato COM • VB • MSAccess (VBA) • Qualquer outra linguagem não gerenciada que suporte COM  .Net aceita qualquer Dll ou componente COM andre.lopes@studentpartners.com.br
  42. 42. Arquitetura da plataforma .Net FrameworkThe End andre.lopes@studentpartners.com.br

×