Sim, os sites escritos em qualquer linguagem da arquitetura do .NET Framework são compilados. Mas vários detalhes estão envolvidos.
Antes de tudo as páginas em ASP.NET são compiladas e são geradas DLLs. As DLL são geradas num código intermediário da Microsoft chamado MSIL (Microsoft Intermediate Language). Um mesmo site pode gerar uma ou mais DLLs. Em tempo de execução o .NET Framework traduz as instruções escritas em código intermediário para as instruções específicas do processador.
Existem alguns benefícios em compilar a página gerando DLL. As principais vantagens são Desempenho, Segurança,
Estabilidade e Interoperabilidade. Nas DLLs os códigos são otimizados no momento da compilação, não criando este overhead em tempo de execução. Técnicas como engenharia reversa são dificultadas, além de ser possível fazer o ofuscamento das DLLs. A sintaxe contida nas DLLs é validada antes da compilação, que garante maior estabilidade do código a ser interpretado. E além de todo isto, as DLLs são interoperáveis, acessíveis por outras linguagens ou plataformas.
Existem algumas vantagens que são herdadas do próprio .NET Framework, como a capacidade de ter um mesmo projeto escrito em diversas linguagens de programação diferentes, se compatíveis a CLS (Commom Language Specifications). Com isto, um mesmo projeto pode ser desenvolvido por equipes diferentes, que programem ao mesmo tempo em C# e VB.NET
Os sites ASP.NET podem ser
automaticamente compilados. Em toda primeira execução de um site ASP.NET, seus códigos e recursos ainda não pré-compilados são compilados. Normalmente o primeiro acesso a sites ASP.NET são mais lentos devido a este recurso.
Se seu site ASP.NET for pré-compilado não ocorrerá nenhuma compilação automática. A compilação automática pode facilitar o Deployment em diversos servidores, mas a pré-compilação evita grandes lentidões provenientes do primeiro acesso.
É possível pré-compilar seu site com a linha de comando
ASPNET_compiler.exe, que dá
suporte a algumas opções:
In-Place Compilation
Realiza a mesma compilação que seria feita pelo processo dinâmico, em tempo de execução. Esta opção é válida quando o seu site já está em produção.
Non-updatable full precompilation
Esta forma de compilação deve ser utilizada para implantação em produção. Tudo é pré-compilado. As páginas ASPX também fazem parte do pacote gerado, mas não são editáveis.
Updatable precompilation
Semelhante ao non-updatable full precompilation, mas com a possibilidade de alterar os arquivos .ASPX gerados.