Exportar (0) Imprimir
Expandir Tudo
Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
Tradução
Original

Understanding ASP.NET Dynamic Compilation

Para que seu aplicativo da Web possa atender requisições de serviços, o ASP.NET deve primeiro analisar e compilar o código do seu aplicativo da Web em um ou mais conjuntos.
Quando o código é compilado, é traduzido para uma representação independente de liguagem e de CPU chamada Linguagem Intermediária da Microsoft (MSIL - Microsoft Intermediate Language). Em tempo de execução, MSIL roda no contexto do Framework .NET, que traduz para instruções específicas de CPU do processador do computador que está rodando a aplicação.

ASP.NET a compilação dinâmica permite que você modifique seu código fonte sem precisar explicitamente compilar seu código antes de implantar seuaplicativode Web. Se você modificar um arquivo de origem, o ASP.NET recompila automaticamente o arquivo e atualiza todos os recursos vinculados.
O servidor IIS não tem de ser reiniciado para que as alterações entrem em vigor a menos que a seção <processModel> seja alterada.

Você pode estender o sistema de compilação do ASP.NET criando provedores de compilação personalizada para novos tipos de arquivo que são chamados durante a compilação.

Por padrão, páginas Web ASP.NET e arquivos de código são compilados dinamicamente quando os usuários requisitarem um recurso pela primeira vez, como uma página ASP.NET (. aspx), a partir de um Web site.
Depois de páginas e arquivos de código foram compilados pela primeira vez, os recursos recolhidos são armazenados em cache, de forma que os pedidos subsequentes para a mesma página são extremamente eficientes.

ASP.NET suporta a compilação dinâmica de páginas ASP.NET (. aspx), ASP.NET Web Services (arquivos. asmx), manipuladores HTTP ASP.NET (arquivos. ashx) e arquivos de aplicativos ASP.NET (Global.asax) , bem como outros arquivos, como código-fonte e arquivos de classe.
Para mais informações sobre tipos de arquivos ASP.NET, consulte Tipos de arquivos de projetos da Web do ASP.NET. Para mais informações sobre o processo de compilação, consulte a seção "Compilation Life Cycle" do Ciclo de Vida do Aplicativo ASP.NET uma visão geral para o IIS 5.0 e 6.0.

Quaisquer alterações em um arquivo compilado dinamicamente invalida automaticamente a montagem do e força a recompilação de todos os recursos afetados compilados do arquivo.
A próxima vez que um pedido para que o código é feita, ASP.NET reconhece que o código mudou e recompila os recursos afetados da aplicação web.
Este sistema permite que você desenvolva rapidamente aplicações com um mínimo de sobrecarga de processamento de compilação.
(Observe que, dependendo da alteração para os recursos, o resultado pode variar desde a recompilação de uma única página para recompilar Web ).

Quando a primeira requisição é feita para uma aplicação, o ASP.NET compila arquivos em uma ordem específica.
Os primeiros itens a serem compilados são referidos como os itens de nível superior. Após o primeira requisição, os itens de nível superior são recompilados somente se ocorrer uma mudança de dependência.

Itens de nível superior incluem a pasta App_GlobalResources, a pasta App_WebResources, propriedades de perfil, a pasta App_Code, e o arquivo Global.asax.
Depois que os itens de nível superior são compilados, o ASP.NET compila itens adicionais. Esses itens incluem a pasta App_LocalResources, páginas ASP.NET individuais (aspx), controles de usuário ASP.NET (arquivos .ascx), manipuladores HTTP ASP.NET (arquivos .ashx) e módulos HTTP ASP.NET (arquivos .asmx ), bem como temas, páginas mestras, e outros arquivos de origem.

Para obter mais informações, consulte Layout de Site Web do ASP.NET e a seção "Compilation Life Cycle" em Visão geral sobre do ciclo de vida do aplicativo ASP.NET.

Quando seu código é compilado, os conjuntos resultantes são armazenados em uma pasta no servidor.
Esta pasta requer permissões adequadas para que o código compile e execute corretamente.
Você pode configurar o local da pasta de compilação e as permissões em que o código compila e funciona.

Compilation Folder Location

Por padrão, quando você compila uma aplicação o código compilado é colocado na pasta de arquivos temporários do ASP.NET.

Esta pasta é um subdiretório do local onde você instalou o framework. NET.
Geralmente, o local é o seguinte:

%SystemRoot%\Microsoft.NET\Framework\versionNumber\Temporary ASP.NET Files

Compilation Folder Required Permissions

O Processo de instalação da plataforma .NET cria a pasta Temporary ASP.NET Files e atribui permissões de acesso à conta de usuário ASP.NET local, que tem as permissões de alta confiança necessárias para acessar o seu código compilado. Se você modificar a configuração ou configurações de conta, você deve certificar-se de que a conta que você usa tem permissões de alta confiança para a pasta Temporary ASP.NET Files.
Para informações adicionais, consulte Como: Executar o processo de trabalho em uma conta de usuário.

Compilation Folder Configurability

ASP.NET cria uma subpasta discreta na pasta Temporary ASP.NET File para cada aplicação.
Você pode configurar o local raiz usando o atributo tempDirectory da seção de compilação do arquivo de configuração.
Este atributo opcional permite que você especifique o diretório usado para armazenamento de arquivos temporários durante a compilação. O padrão é uma string vazia (""). No caso de uma cadeia vazia, e se o processo atual tem as permissões de acesso necessárias, os arquivos são armazenados no seguinte diretório:

%FrameworkInstallLocation%\Temporary ASP.NET Files

Para obter mais informações, consulte Elemento compilation (Esquema de configurações ASP.NET) e a propriedade TempDirectory de CompilationSection.

ASP.NET 2.0 suporta várias linguagens de programação na mesma aplicação Web.
No diretório App_Code, você pode especificar uma subpasta para cada linguagem, como C # e Visual Basic.
ASP.NET irá criar um assembly separado para cada subpasta.
Para mais informações, consulte Pastas de Código Compartilhadas em Projetos Web do ASP.NET e Passo a passo: Usando várias linguagens de programação em um projeto de site.

Por padrão, quando qualquer alteração é feita uma nível superior- o arquivo em um site da Web , todo o site é recompilado. Arquivos de nível superior-incluem o arquivo global. asax e todos os arquivos nas pastas de App_Code e bin. É mais seguro recompilar tudo quando um desses arquivos é alterada porque outros arquivos no site, como. aspx e. ascx, pode fazer referência a objetos criados por código em arquivos de nível superior-.

Enquanto a maioria dos aplicativos recompilar tudo funciona bem, ele pode causar um grande aplicativo esteja indisponível por longos períodos de tempo, mesmo quando pequenas alterações foram feitas a ele. Se o aplicativo for grande o suficiente, ele poderia ficar indisponível por cinco a dez minutos ou mais após uma alteração é feita.

Se você deseja ser capaz de alterar os arquivos de nível superior-sem causar todo o site ser recompilado, você pode definir o atributo do optimizeCompilations da compilação elemento no arquivo Web. config para true. Se optimizeCompilations for true, quando você altera um arquivo de nível superior somente os arquivos afetados serão recompilados. Isso economiza tempo, mas pode causar erros em tempo de execução, dependendo do tipo de alterações feitas em um arquivo de nível superior.

Os seguintes tipos de alterações são geralmente seguros:

  • Alterando a implementação de um método. Porque a assinatura não é alterada, páginas compiladas da antiga versão podem chamar o método sem gerar uma exceção.

  • Adicionando novos métodos ou propriedades. Porque eles não existiam anteriormente, nenhuma página já compilada fará referência a eles, e nenhuma exceção será lançada.

  • Adicionando um atributo CLR para um membro existente. Este é um típico cenário de Dados Dinâmicos onde você pode adicionar atributos como DisplayName para propriedades. Porque os atributos do CLR são descobertos em tempo de execução através de reflexão, páginas existentes não tem que ser recompilados.

Os seguintes tipos de alterações podem causar exceções em tempo de execução:

  • Renomear ou excluir métodos ou propriedades. Se o membro afetado for referenciado por uma página já compilada, uma exceção será lançada.

  • Alterando a assinatura de um método ou o tipo de uma propriedade. Se o membro afetado for referenciado por uma página já compilada, uma exceção será lançada. Algumas mudanças de assinatura não causariam erros de compilação ou em tempo de execução se o site inteiro for recompilado.
    Por exemplo, o código de Response.Write(ClassA.MethodA() em uma página. aspx será compilado e executado sem problemas se MethodA retornar um int ou short. Mas se a página. aspx já está compilada e você alterar o tipo de retorno de MethodA de int para short sem recompilar, será lançada uma exceção de tempo de execução porque o código compilado espera uma assinatura int.

Se você quiser usar o atributo optimizeCompilations para minimizar o tempo de compilação dinâmica, você deve examinar cuidadosamente cada alteração que você faça nos arquivos de nível superior do seu site e se uma determinada alteração não é segura, remova o atributo optimizeCompilations temporariamente ou a defina como false.

Há certas capacidades que a compilação dinâmica não oferece. A compilação dinâmica pode significar um tempo de resposta inicial mais lento para os usuários, porque as páginas e arquivos de código devem ser compilados a primeira vez que eles são requisitados. Isso pode ser um problema especialmente em grandes sites que são atualizados com freqüência. A compilação dinâmica não oferece um meio para identificar erros em tempo de compilação antes que os usuários acessem um site.
Além disso, a compilação dinâmica não fornece a capacidade de criar uma versão compilada do site que pode ser implantada em um servidor de produção sem código fonte. Se qualquer uma dessas questões representam preocupações para seus aplicativos da Web, você pode pré-compilar seu Web site.
Para mais detalhes e informações, consulte ASP.NET Precompilation Overview.

Contribuições da comunidade

ADICIONAR
A Microsoft está realizando uma pesquisa online para saber sua opinião sobre o site do MSDN. Se você optar por participar, a pesquisa online lhe será apresentada quando você sair do site do MSDN.

Deseja participar?
Mostrar:
© 2014 Microsoft