Visão geral da Compilação do ASP.NET

Para que o código do aplicativo atenda as solicitações dos usuários, o ASP.NET deve primeiro compilar o código em um ou mais conjuntos de módulos (assemblies).Conjuntos de Módulos (Assemblies) são arquivos que possuem a extensão de nome de arquivo .dll.Você pode escrever código do ASP.NET em várias linguagens diferentes, como Visual Basic, C#, J# entre outras.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 processado do computador que está rodando a aplicação.

Há muitos benefícios em compilar o código do aplicativo, incluindo:

  • Desempenho Código compilado é muito mais rápido que linguagens de script como VBScript ou ECMAScript, porque é uma representação mais próxima do código de máquina e não requer análise adicional.

  • Segurança Código compilado é mais difícil de reverter a engenharia que código-fonte não compilado porque ele não possui a legibilidade e abstração de uma linguagem de alto nível.Além disso, existem ferramentas de obscurecimento que tornam o código compilado ainda mais resistente à engenharia reversa.

  • Estabilidade O código é verificado em tempo de compilação para erros de sintaxe, segurança de tipos e outros problemas.Encontrando esses erros em tempo de compilação, você pode eliminar esses e outros erros no seu código.

  • Interoperabilidade Como o código MSIL suporta qualquer linguagem .NET, você pode usar conjuntos de módulos (assemblies) que foram originalmente escritos em outras linguagens no seu código.Por exemplo, se você estiver escrevendo uma página Web do ASP.NET em C#, você pode adicionar uma referência a um arquivo .dll que foi escrito em Visual Basic.

A arquitetura da compilação do ASP.NET possui uma série de recursos, incluindo:

  • Suporte a várias linguagens.

  • Compilação automática.

  • Implantação flexível.

  • Sistema extensível de compilação.

As seguintes seções descrevem cada um desses recursos.

Multiple Language Support

No ASP.NET 2.0, você pode usar diferentes linguagens, como Visual Basic e C# no mesmo aplicativo porque o ASP.NET irá criar vários conjuntos de módulos (assemblies), um para cada idioma.Para o código armazenado na pasta App_Code, você pode especificar uma subpasta para cada linguagem.Para obter mais informações sobre a pasta App_Code, consulte Pastas de código compartilhado em sites da Web ASP.NET.

Compilação Automática.

O ASP.NET automaticamente compila o código do seu aplicativo e quaisquer recursos dependentes na primeira vez que um usuário solicitar um recurso do site.Em geral, o ASP.NET cria um conjunto de módulos (assembly) para cada diretório do aplicativo (como App_Code) e outro para a pasta principal.(Se arquivos em um diretório estiverem em diferentes linguagens de programação, então assemblies separados serão criados para cada linguagem.) Você pode especificar quais pastas serão compiladas em único conjunto de módulos (assembly) na seção Compilation do arquivo Web.config.

Implantação flexível.

Como o ASP.NET compila o seu site da Web na primeira solicitação do usuário, você pode simplesmente copiar o código-fonte do seu aplicativo para o servidor Web de produção.No entanto, o ASP.NET também fornece opções de pré-compilação que permitem que você compile o seu site da Web antes que ele tenha sido implantado, ou compile-o após ter sido implantado mas antes de um usuário solicitá-lo.A pré-compilação apresenta diversas vantagens.Ela pode melhorar o desempenho do seu site na primeira solicitação porque não haverá nenhum tempo de latência enquanto o ASP.NET compila o site.Pré-compilar também pode ajudar você a localizar erros que, caso contrário, podem ser encontrados somente quando um usuário solicita uma página.Finalmente, se você pré-compilar o site antes de implantá-lo, você pode implantar os conjuntos de módulos (assemblies) ao invés do código-fonte.

Você pode pré-compilar um site da Web usando a ferramenta do compilador do ASP.NET (ASPNET_Compiler.exe).A ferramenta que fornece as seguintes opções de pré-compilação:

  • Compilação no local Essa opção executa a mesma compilação que ocorre durante a compilação dinâmica.Use esta opção para compilar um site da Web que já tenha sido implantado para um servidor de produção.

  • Pré-compilação completa não atualizável Use esta para compilar um aplicativo e, em seguida, copiar a saída compilada para o servidor de produção.Todos o código do aplicativo, da marcação e da interface do usuário é compilado em conjuntos de módulos (assemblies).Arquivos de espaço reservado, como páginas .aspx ainda existem para que você possa realizar tarefas de arquivos específicos, como configurar permissões, mas os arquivos não contêm nenhum código atualizável.Para poder atualizar qualquer página ou qualquer código, você deve pré-compilar o site novamente e implantá-lo novamente.

  • Pré-compilação Atualizável Esta assemelha-se à pré-compilação completa não atualizável, exceto que elementos de interface do usuário, como páginas .aspx e controles .ascx retêm todas as suas marcações, código de interface do usuário e código embutido, se houver.Você pode atualizar código no arquivo após ele ter sido implantado; o ASP.NET detectará mudanças no arquivo e irá recompilá-lo.Observe que o código em um arquivo code-behind (arquivo .vb ou .cs) é compilado em assemblies durante a pré-compilação, e você, portanto, não pode alterá-lo sem passar pelas etapas de pré-compilação e implantação novamente.

Para obter mais informações, consulte ASP.NET Precompilation Overview.

Sistema de Compilação Extensível

O ASP.NET usa classes BuildProvider para compilar itens como páginas .aspx, arquivos .ascx e recursos globais.Você pode estender e personalizar o sistema de compilação do ASP.NET para compilar recursos personalizados, criando classes que herdam da classe BuildProvider.Por exemplo, você pode adicionar um novo tipo de arquivo e, em seguida, escrever um BuildProvider que cria esse tipo específico.

Consulte também

Referência

Elemento compilation (Esquema de configurações ASP.NET)

Outros recursos

Precompilação de Site da Web ASP.NET