SlideShare una empresa de Scribd logo
1 de 42
Descargar para leer sin conexión
Dev                Arquitetura da



        2011
  in                 Plataforma
                   .Net Framework
Cachu
                 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
Arquitetura da plataforma .Net
                                      Framework
Iniciativa .NET
                            2002
                            Serviços Web Baseados
                            em XML
                              .Net Framework

                   1996       1998
                   Internet   Internet
                   1ª Geração 2ª Geração
                   IE/IIS      WinDNA
1992
Cliente/Servidor
     Win32

                             andre.lopes@studentpartners.com.br
Arquitetura da plataforma .Net
                                               Framework
Iniciativa .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
Arquitetura da plataforma .Net
                                         Framework
Iniciativa .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
Arquitetura da plataforma .Net
                                         Framework
Iniciativa .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
Arquitetura da plataforma .Net
                                            Framework
    Iniciativa .NET

                     ModuloA.cs         ModuloB.vb




Representação Intermédia
                                                      Interoperabilidade
                     ModuloA.dll        ModuloB.dll
                                                       entre linguagens




                      Windows            Windows        Portabilidade
                        XP                  CE




                                   andre.lopes@studentpartners.com.br
Arquitetura da plataforma .Net
                                     Framework
Iniciativa .NET
    Web Services XML

    Web Forms

    GUI Win32

    CUI Win32

    Serviços

    Utilitários

    Componentes Isolados




                            andre.lopes@studentpartners.com.br
Arquitetura da plataforma .Net
                                     Framework
Iniciativa .NET
    NormalizaçãoPadronização

       ECMA 335 ISO/IEC 23271:2003
       SSCLI




                            andre.lopes@studentpartners.com.br
Arquitetura da plataforma .Net
                       Framework




Conceitos Importantes
 CLR
 IL
 Metadados
 PE
 Assembly




              andre.lopes@studentpartners.com.br
Arquitetura da plataforma .Net
                                          Framework
Common 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
Arquitetura da plataforma .Net
                                                                  Framework
Common 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
Arquitetura da plataforma .Net
                                         Framework
Common Language Runtime


Código Gerenciado (.NET)

                 Common Language Runtime


Solicita um recurso existente




Win 32/64 SO




                                andre.lopes@studentpartners.com.br
Arquitetura da plataforma .Net
                               Framework
Demonstração



 Classesdo .Net Framework que acessam
  diretamente recursos da CLR




                      andre.lopes@studentpartners.com.br
Arquitetura da plataforma .Net
                                          Framework
Intermediate 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
Arquitetura da plataforma .Net
                                                 Framework
     Intermediate Language
            Trabalha com o conceito de pilhas
Hello.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
Arquitetura da plataforma .Net
                                         Framework
Intermediate 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
Arquitetura da plataforma .Net
                                               Framework
Metadata
    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
Arquitetura da plataforma .Net
                                         Framework
Metadata
   Utilidades
      • Eliminam a necessidade de arquivos de cabeçalho

      • IntelliSense

      • Código Seguro

      • Serialização

      • Coletor de Lixo




                                 andre.lopes@studentpartners.com.br
Arquitetura da plataforma .Net
                                        Framework
Metadata
    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
Arquitetura da plataforma .Net
                                           Framework
PE
      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
Arquitetura da plataforma .Net
                                            Framework
PE
      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
Arquitetura da plataforma .Net
                                            Framework
Assembly
   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
Arquitetura da plataforma .Net
                                           Framework
Assembly
 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)
                                                       assembly
Arquivos de recursos         Compilado VB
(jpeg, .gif, .html, etc)       (vbc.exe)

                             Assembly Linker
Arquivos de recursos
                                 (al.exe)
(jpeg, .gif, .html, etc)
           .
           .
           .
                                   andre.lopes@studentpartners.com.br
Arquitetura da plataforma .Net
                          Framework




Funcionamento
 Compilação
 Carregamento
 Execução




                 andre.lopes@studentpartners.com.br
Arquitetura da plataforma .Net
                                      Framework
Compilaçã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
Arquitetura da plataforma .Net
                                         Framework
Compilaçã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
Arquitetura da plataforma .Net
                                           Framework
Carregamento
   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
Arquitetura da plataforma .Net
                                                        Framework
Carregamento
                              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
       Metadados

1.    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
Arquitetura da plataforma .Net
                                            Framework
Carregamento
   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
Arquitetura da plataforma .Net
                                         Framework
Execuçã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
Arquitetura da plataforma .Net
                                          Framework
Execuçã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
Arquitetura da plataforma .Net
                                                    Framework
  Execução
          EXE gerenciado
                                                             Console
static 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
Arquitetura da plataforma .Net
                                                    Framework
  Execução
          EXE gerenciado
                                                            Console
static 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; o código nativo é salvo no bloco
   alocado em 3
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
Arquitetura da plataforma .Net
                                            Framework
Execuçã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
Arquitetura da plataforma .Net
                                Framework
Solicitações ASP.NET




                                   Servidor
                                      IIS



                       andre.lopes@studentpartners.com.br
Arquitetura da plataforma .Net
                                              Framework
Solicitações ASP.NET
 Após a solicitação chegar no servidor IIS ela é mapeada, dependendo
do 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 tipo
EXTENSION_CONTROL_BLOCK

 O IIS chama a função HttpExtensionProc da dll ISAPI atual e passa
a estrutura mencionada acima




                                     andre.lopes@studentpartners.com.br
Arquitetura da plataforma .Net
                                              Framework
Solicitações ASP.NET
 A dll ISAPI compila a página solicitada e devolve o resultado para o
IIS

   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 com
as 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
Arquitetura da plataforma .Net
                                            Framework
Interoperabilidade
    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
Arquitetura da plataforma .Net
                                   Framework
Interoperabilidade

                CLRCTS


           C#             VB


                 CLS




                Fortran




                          andre.lopes@studentpartners.com.br
Arquitetura da plataforma .Net
                                   Framework
Interoperabilidade
   [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
Arquitetura da plataforma .Net
                                        Framework
Interoperabilidade
   [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
Arquitetura da plataforma .Net
                   Framework




The End




          andre.lopes@studentpartners.com.br

Más contenido relacionado

Destacado

Intregrando os projetos de TI com Arquitetura de Informação
Intregrando os projetos de TI com Arquitetura de Informação  Intregrando os projetos de TI com Arquitetura de Informação
Intregrando os projetos de TI com Arquitetura de Informação CogIgnition
 
SOA - Uma Breve Introdução
SOA - Uma Breve IntroduçãoSOA - Uma Breve Introdução
SOA - Uma Breve IntroduçãoAndré Borgonovo
 
Arquitetura.corporativa
Arquitetura.corporativaArquitetura.corporativa
Arquitetura.corporativaJoao Paulo PG
 
Marcio iti lv3_3_projeto_deservicos
Marcio iti lv3_3_projeto_deservicosMarcio iti lv3_3_projeto_deservicos
Marcio iti lv3_3_projeto_deservicosfernandao777
 
Workshops M21 - AMA/ESOP - Alfresco - MoreData
Workshops M21 - AMA/ESOP - Alfresco - MoreDataWorkshops M21 - AMA/ESOP - Alfresco - MoreData
Workshops M21 - AMA/ESOP - Alfresco - MoreDataFernando Fernández
 
Workshop Gerenciamento de Serviços de TI na Prática
Workshop Gerenciamento de Serviços de TI na PráticaWorkshop Gerenciamento de Serviços de TI na Prática
Workshop Gerenciamento de Serviços de TI na PráticaIvan Luizio Magalhães
 
Utilizacao de meta modelos na representacao de informacao complexa
Utilizacao de meta modelos na representacao de informacao complexaUtilizacao de meta modelos na representacao de informacao complexa
Utilizacao de meta modelos na representacao de informacao complexaPedro Valente
 
Arquitetura de TI, Infraestrutura de TI e Processos de Negócio
Arquitetura de TI, Infraestrutura de TI e Processos de NegócioArquitetura de TI, Infraestrutura de TI e Processos de Negócio
Arquitetura de TI, Infraestrutura de TI e Processos de NegócioMauricio Uriona Maldonado PhD
 
Governança de ti na prática com bsc, cobit e itil
Governança de ti na prática com bsc, cobit e itilGovernança de ti na prática com bsc, cobit e itil
Governança de ti na prática com bsc, cobit e itilFernando Palma
 

Destacado (11)

Intregrando os projetos de TI com Arquitetura de Informação
Intregrando os projetos de TI com Arquitetura de Informação  Intregrando os projetos de TI com Arquitetura de Informação
Intregrando os projetos de TI com Arquitetura de Informação
 
SOA - Uma Breve Introdução
SOA - Uma Breve IntroduçãoSOA - Uma Breve Introdução
SOA - Uma Breve Introdução
 
Arquitetura.corporativa
Arquitetura.corporativaArquitetura.corporativa
Arquitetura.corporativa
 
Marcio iti lv3_3_projeto_deservicos
Marcio iti lv3_3_projeto_deservicosMarcio iti lv3_3_projeto_deservicos
Marcio iti lv3_3_projeto_deservicos
 
Workshops M21 - AMA/ESOP - Alfresco - MoreData
Workshops M21 - AMA/ESOP - Alfresco - MoreDataWorkshops M21 - AMA/ESOP - Alfresco - MoreData
Workshops M21 - AMA/ESOP - Alfresco - MoreData
 
Gestão Estratégica da TI - Apresentação
Gestão Estratégica da TI - ApresentaçãoGestão Estratégica da TI - Apresentação
Gestão Estratégica da TI - Apresentação
 
Workshop Gerenciamento de Serviços de TI na Prática
Workshop Gerenciamento de Serviços de TI na PráticaWorkshop Gerenciamento de Serviços de TI na Prática
Workshop Gerenciamento de Serviços de TI na Prática
 
Utilizacao de meta modelos na representacao de informacao complexa
Utilizacao de meta modelos na representacao de informacao complexaUtilizacao de meta modelos na representacao de informacao complexa
Utilizacao de meta modelos na representacao de informacao complexa
 
Virtual box
Virtual boxVirtual box
Virtual box
 
Arquitetura de TI, Infraestrutura de TI e Processos de Negócio
Arquitetura de TI, Infraestrutura de TI e Processos de NegócioArquitetura de TI, Infraestrutura de TI e Processos de Negócio
Arquitetura de TI, Infraestrutura de TI e Processos de Negócio
 
Governança de ti na prática com bsc, cobit e itil
Governança de ti na prática com bsc, cobit e itilGovernança de ti na prática com bsc, cobit e itil
Governança de ti na prática com bsc, cobit e itil
 

Similar a Arquitetura[.net]

Palestra Plataforma .NET na ETEC Marília
Palestra Plataforma .NET na ETEC MaríliaPalestra Plataforma .NET na ETEC Marília
Palestra Plataforma .NET na ETEC MaríliaElvis Fusco
 
TOTVS IP CAMPINAS FSW Treinamento .NET C# - v4 POR FABIO DELBONI
TOTVS IP CAMPINAS FSW Treinamento .NET C# - v4 POR FABIO DELBONITOTVS IP CAMPINAS FSW Treinamento .NET C# - v4 POR FABIO DELBONI
TOTVS IP CAMPINAS FSW Treinamento .NET C# - v4 POR FABIO DELBONIFábio Delboni
 
01 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.101 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.1César Augusto Pessôa
 
ASP.NET e Visual Studio 2010
ASP.NET e Visual Studio 2010ASP.NET e Visual Studio 2010
ASP.NET e Visual Studio 2010Norton Guimarães
 
Desenvolvimento de Software na Plataforma Microsoft .NET
Desenvolvimento de Software na Plataforma Microsoft .NETDesenvolvimento de Software na Plataforma Microsoft .NET
Desenvolvimento de Software na Plataforma Microsoft .NETGustavo Malheiros
 
Conhecendo a Plataforma .NET
Conhecendo a Plataforma .NETConhecendo a Plataforma .NET
Conhecendo a Plataforma .NETPedro Alves Jr.
 
Construindo aplicações robustas com a suíte de tecnologias gratuítas da Micro...
Construindo aplicações robustas com a suíte de tecnologias gratuítas da Micro...Construindo aplicações robustas com a suíte de tecnologias gratuítas da Micro...
Construindo aplicações robustas com a suíte de tecnologias gratuítas da Micro...Fabrício Lopes Sanchez
 
TDC 2016 POA: O novo ASP.NET Core 1.0 multiplataforma
TDC 2016 POA: O novo ASP.NET Core 1.0 multiplataformaTDC 2016 POA: O novo ASP.NET Core 1.0 multiplataforma
TDC 2016 POA: O novo ASP.NET Core 1.0 multiplataformaRogério Moraes de Carvalho
 
TDC2016POA | Trilha .NET - O novo ASP.NET Core 1.0 multiplataforma
TDC2016POA | Trilha .NET - O novo ASP.NET Core 1.0 multiplataformaTDC2016POA | Trilha .NET - O novo ASP.NET Core 1.0 multiplataforma
TDC2016POA | Trilha .NET - O novo ASP.NET Core 1.0 multiplataformatdc-globalcode
 
Model Driven RichUbi - A Model-Driven Process to Construct Rich Interfaces fo...
Model Driven RichUbi - A Model-Driven Process to Construct Rich Interfaces fo...Model Driven RichUbi - A Model-Driven Process to Construct Rich Interfaces fo...
Model Driven RichUbi - A Model-Driven Process to Construct Rich Interfaces fo...Luciana Zaina
 
Interoperabilidade com .NET em ambiente Mainframe
Interoperabilidade com .NET em ambiente MainframeInteroperabilidade com .NET em ambiente Mainframe
Interoperabilidade com .NET em ambiente MainframeAlessandro Binhara
 

Similar a Arquitetura[.net] (20)

Palestra Plataforma .NET na ETEC Marília
Palestra Plataforma .NET na ETEC MaríliaPalestra Plataforma .NET na ETEC Marília
Palestra Plataforma .NET na ETEC Marília
 
TOTVS IP CAMPINAS FSW Treinamento .NET C# - v4 POR FABIO DELBONI
TOTVS IP CAMPINAS FSW Treinamento .NET C# - v4 POR FABIO DELBONITOTVS IP CAMPINAS FSW Treinamento .NET C# - v4 POR FABIO DELBONI
TOTVS IP CAMPINAS FSW Treinamento .NET C# - v4 POR FABIO DELBONI
 
1º FasS2B 2010
1º FasS2B 20101º FasS2B 2010
1º FasS2B 2010
 
01 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.101 - Introdução a programação para internet v1.1
01 - Introdução a programação para internet v1.1
 
Introdução C#
Introdução C#Introdução C#
Introdução C#
 
.NET Open Source
.NET Open Source.NET Open Source
.NET Open Source
 
Novidades do .NET 3.5
Novidades do .NET 3.5Novidades do .NET 3.5
Novidades do .NET 3.5
 
Introdução ao .NET
Introdução ao .NETIntrodução ao .NET
Introdução ao .NET
 
Cebraspe 2016: .NET Core e ASP.NET Core
Cebraspe 2016: .NET Core e ASP.NET CoreCebraspe 2016: .NET Core e ASP.NET Core
Cebraspe 2016: .NET Core e ASP.NET Core
 
ASP.NET e Visual Studio 2010
ASP.NET e Visual Studio 2010ASP.NET e Visual Studio 2010
ASP.NET e Visual Studio 2010
 
Desenvolvimento de Software na Plataforma Microsoft .NET
Desenvolvimento de Software na Plataforma Microsoft .NETDesenvolvimento de Software na Plataforma Microsoft .NET
Desenvolvimento de Software na Plataforma Microsoft .NET
 
Conhecendo a Plataforma .NET
Conhecendo a Plataforma .NETConhecendo a Plataforma .NET
Conhecendo a Plataforma .NET
 
Csharp
CsharpCsharp
Csharp
 
Construindo aplicações robustas com a suíte de tecnologias gratuítas da Micro...
Construindo aplicações robustas com a suíte de tecnologias gratuítas da Micro...Construindo aplicações robustas com a suíte de tecnologias gratuítas da Micro...
Construindo aplicações robustas com a suíte de tecnologias gratuítas da Micro...
 
TDC 2016 POA: O novo ASP.NET Core 1.0 multiplataforma
TDC 2016 POA: O novo ASP.NET Core 1.0 multiplataformaTDC 2016 POA: O novo ASP.NET Core 1.0 multiplataforma
TDC 2016 POA: O novo ASP.NET Core 1.0 multiplataforma
 
TDC2016POA | Trilha .NET - O novo ASP.NET Core 1.0 multiplataforma
TDC2016POA | Trilha .NET - O novo ASP.NET Core 1.0 multiplataformaTDC2016POA | Trilha .NET - O novo ASP.NET Core 1.0 multiplataforma
TDC2016POA | Trilha .NET - O novo ASP.NET Core 1.0 multiplataforma
 
Web Dev Camp
Web Dev CampWeb Dev Camp
Web Dev Camp
 
Model Driven RichUbi - A Model-Driven Process to Construct Rich Interfaces fo...
Model Driven RichUbi - A Model-Driven Process to Construct Rich Interfaces fo...Model Driven RichUbi - A Model-Driven Process to Construct Rich Interfaces fo...
Model Driven RichUbi - A Model-Driven Process to Construct Rich Interfaces fo...
 
Interoperabilidade com .NET em ambiente Mainframe
Interoperabilidade com .NET em ambiente MainframeInteroperabilidade com .NET em ambiente Mainframe
Interoperabilidade com .NET em ambiente Mainframe
 
DotNet Remoting - .NET framework
DotNet Remoting - .NET frameworkDotNet Remoting - .NET framework
DotNet Remoting - .NET framework
 

Arquitetura[.net]

  • 1. Dev Arquitetura da 2011 in Plataforma .Net Framework Cachu 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. Arquitetura da plataforma .Net Framework Iniciativa .NET 2002 Serviços Web Baseados em XML .Net Framework 1996 1998 Internet Internet 1ª Geração 2ª Geração IE/IIS WinDNA 1992 Cliente/Servidor Win32 andre.lopes@studentpartners.com.br
  • 3. Arquitetura da plataforma .Net Framework Iniciativa .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. Arquitetura da plataforma .Net Framework Iniciativa .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. Arquitetura da plataforma .Net Framework Iniciativa .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. Arquitetura da plataforma .Net Framework Iniciativa .NET ModuloA.cs ModuloB.vb Representação Intermédia Interoperabilidade ModuloA.dll ModuloB.dll entre linguagens Windows Windows Portabilidade XP CE andre.lopes@studentpartners.com.br
  • 7. Arquitetura da plataforma .Net Framework Iniciativa .NET  Web Services XML  Web Forms  GUI Win32  CUI Win32  Serviços  Utilitários  Componentes Isolados andre.lopes@studentpartners.com.br
  • 8. Arquitetura da plataforma .Net Framework Iniciativa .NET  NormalizaçãoPadronização  ECMA 335 ISO/IEC 23271:2003  SSCLI andre.lopes@studentpartners.com.br
  • 9. Arquitetura da plataforma .Net Framework Conceitos Importantes  CLR  IL  Metadados  PE  Assembly andre.lopes@studentpartners.com.br
  • 10. Arquitetura da plataforma .Net Framework Common 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. Arquitetura da plataforma .Net Framework Common 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. Arquitetura da plataforma .Net Framework Common Language Runtime Código Gerenciado (.NET) Common Language Runtime Solicita um recurso existente Win 32/64 SO andre.lopes@studentpartners.com.br
  • 13. Arquitetura da plataforma .Net Framework Demonstração  Classesdo .Net Framework que acessam diretamente recursos da CLR andre.lopes@studentpartners.com.br
  • 14. Arquitetura da plataforma .Net Framework Intermediate 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. Arquitetura da plataforma .Net Framework Intermediate Language  Trabalha com o conceito de pilhas Hello.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. Arquitetura da plataforma .Net Framework Intermediate 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. Arquitetura da plataforma .Net Framework Metadata  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. Arquitetura da plataforma .Net Framework Metadata  Utilidades • Eliminam a necessidade de arquivos de cabeçalho • IntelliSense • Código Seguro • Serialização • Coletor de Lixo andre.lopes@studentpartners.com.br
  • 19. Arquitetura da plataforma .Net Framework Metadata  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. Arquitetura da plataforma .Net Framework PE  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. Arquitetura da plataforma .Net Framework PE  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. Arquitetura da plataforma .Net Framework Assembly  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. Arquitetura da plataforma .Net Framework Assembly 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) assembly Arquivos de recursos Compilado VB (jpeg, .gif, .html, etc) (vbc.exe) Assembly Linker Arquivos de recursos (al.exe) (jpeg, .gif, .html, etc) . . . andre.lopes@studentpartners.com.br
  • 24. Arquitetura da plataforma .Net Framework Funcionamento  Compilação  Carregamento  Execução andre.lopes@studentpartners.com.br
  • 25. Arquitetura da plataforma .Net Framework Compilaçã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. Arquitetura da plataforma .Net Framework Compilaçã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. Arquitetura da plataforma .Net Framework Carregamento  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. Arquitetura da plataforma .Net Framework Carregamento 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 Metadados 1. 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. Arquitetura da plataforma .Net Framework Carregamento  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. Arquitetura da plataforma .Net Framework Execuçã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. Arquitetura da plataforma .Net Framework Execuçã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. Arquitetura da plataforma .Net Framework Execução EXE gerenciado Console static 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. Arquitetura da plataforma .Net Framework Execução EXE gerenciado Console static 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; o código nativo é salvo no bloco alocado em 3 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
  • 34. Arquitetura da plataforma .Net Framework Execuçã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. Arquitetura da plataforma .Net Framework Solicitações ASP.NET Servidor IIS andre.lopes@studentpartners.com.br
  • 36. Arquitetura da plataforma .Net Framework Solicitações ASP.NET  Após a solicitação chegar no servidor IIS ela é mapeada, dependendo do 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 tipo EXTENSION_CONTROL_BLOCK  O IIS chama a função HttpExtensionProc da dll ISAPI atual e passa a estrutura mencionada acima andre.lopes@studentpartners.com.br
  • 37. Arquitetura da plataforma .Net Framework Solicitações ASP.NET  A dll ISAPI compila a página solicitada e devolve o resultado para o IIS  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 com as 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. Arquitetura da plataforma .Net Framework Interoperabilidade  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. Arquitetura da plataforma .Net Framework Interoperabilidade CLRCTS C# VB CLS Fortran andre.lopes@studentpartners.com.br
  • 40. Arquitetura da plataforma .Net Framework Interoperabilidade [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. Arquitetura da plataforma .Net Framework Interoperabilidade [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. Arquitetura da plataforma .Net Framework The End andre.lopes@studentpartners.com.br