Cenários de aplicativo de emissão de reflexão
Esta seção descreve em mais detalhes alguns dos cenários nos quais aplicativos usam reflexão emitem e métodos dinâmicos.
A execução de um Script em um navegador da Web
Nesse cenário, um navegador da Web carrega uma página HTML contendo um programa de script e executa o programa. As etapas são:
O navegador da Web inicia o mecanismo de script no domínio de aplicativo do navegador da Web.
O navegador da Web extrai o script da página HTML e passa para o mecanismo de script.
O mecanismo de script cria um assembly dinâmico transitório.
O mecanismo de script usa a reflexão emitir APIs para emitir o código no assembly dinâmico.
A execução de um Script em um aplicativo ASP.NET Page
Nesse cenário, um navegador abrirá uma página ASP.NET personalizada contendo um programa de script. O programa é compilado no servidor e executado. As etapas são:
ASP.NET inicia o seu domínio de aplicativo e inicia o mecanismo de script para compilar e executar o programa.
O mecanismo de script cria um assembly dinâmico persistente e um módulo dinâmico persistente no assembly dinâmico.
O mecanismo de script compila o programa usando a reflexão emitir APIs e emite o código no módulo dinâmico persistente.
O código compilado é executado e um eval expressão é encontrado.
O mecanismo de script cria um módulo dinâmico temporário no assembly dinâmico para conter o código para o eval expressão.
O mecanismo de script avalia o eval expressão executando o módulo dinâmico transitório.
ASP.NET solicita que o mecanismo de script para salvar o assembly dinâmico e o módulo dinâmico persistente no cache, para que o script não precisa ser recompilado quando for visitada novamente.
Emissão de uma expressão Regular, usando a reflexão de compilação
Nesse cenário, uma compilador usa emissão de reflexão para compilar as expressões regulares no código-fonte. Um usuário pode declarar quais expressões regulares devem ser compiladas. As etapas são:
O compilador processe o primeiro uso de uma expressão regular no código-fonte de um usuário.
As compilações de compilador usando a reflexão de classe de expressão regular em um scanner personalizado emitem porque o usuário solicitou que a expressão a ser compilado. A expressão regular é primeiro convertida opcodes de expressão regular do compilador. Por exemplo, uma instrução pode dizer, "tenta corresponder zero ou mais de um" Os opcodes de expressão regular, em seguida, são traduzidos para Microsoft intermediate language (MSIL). Por exemplo, o compilador pode gerar um loop que itera em todas que as ocorrências da letra a que encontradas.
O compilador salva a classe do scanner compilado para uso futuro.
O compilador instancia a classe de scanner compilado e executa o código no domínio do aplicativo atual.
O compilador processe um uso subseqüente da expressão regular mesmo no código de origem do usuário.
O compilador recupera a classe do scanner compilado para a expressão regular, cria uma instância dela e executa o código no domínio do aplicativo atual.
O usuário gera uma penalidade de desempenho quando a primeira instância de uma expressão regular é usada porque o compilador precisa compilar a expressão em uma classe de scanner. No entanto, os usos subseqüentes da expressão regular mesmo são executados com eficiência. Expressões regulares que são usados com freqüência, a penalidade de compilação única é insignificante, pois há uma melhoria significativa no tempo de execução possível.
Consulte também
Conceitos
Expressões Regulares do .NET Framework