Compartilhar via


reflexão Emit cenários de aplicativo

Esta seção descreve em mais detalhes alguns dos cenários nos quais aplicativos usam reflexão emitem e métodos dinâmicos.

Executar um script em um navegador da Web

Nesse cenário, um navegador da Web carrega uma página HTML que contém um programa de script e executa o programa.sistema autônomo etapas são:

  1. O navegador da Web inicia o mecanismo de script no domínio do aplicativo do navegador da Web.

  2. O navegador da Web extrai o script da página HTML e passa para o mecanismo de script.

  3. O mecanismo de script cria um assembly dinâmico transitório.

  4. O mecanismo de script usa a reflexão emitir APIs para emitir o código no assembly dinâmico.

Executar um script em uma página ASP.NET

Nesse cenário, um navegador abrirá uma página ASP.NET que contém um programa de script.O programa é compilado no servidor e executado.sistema autônomo etapas são:

  1. O ASP.NET inicia seu domínio do aplicativo e inicia o mecanismo de script para compilar e executar o programa.

  2. O mecanismo de script cria um assembly dinâmico persistente e um módulo dinâmico persistente no conjunto de módulos (assembly) dinâmico.

  3. O mecanismo de script compila o programa usando a reflexão emitir APIs e emite o código no módulo dinâmico persistente.

  4. O código compilado é executado e um eval expressão é encontrado.

  5. O mecanismo de script cria um módulo dinâmico transitório no assembly dinâmico para conter o código para o eval expressão.

  6. O mecanismo de script avalia o eval expressão executando o módulo dinâmico transitório.

  7. ASP.NET solicita o mecanismo de script para salvar o conjunto dinâmico e o módulo dinâmico persistente no cache para que o script não precisa ser recompilado quando a página for visitada novamente.

Compilando uma expressão regular com reflexão Emit

Nesse cenário, emitir um reflexão de usos do compilador para compilar as expressões regulares no código-fonte.Um usuário pode declarar as expressões regulares devem ser compiladas.sistema autônomo etapas são:

  1. O compilador processa o primeiro uso de uma expressão regular no código-fonte do usuário.

  2. Compila a compilador a expressão regular para um mecanismo de varredura personalizada usando a reflexão de classe emite 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 linguagem (MSIL).Por exemplo, o compilador pode gerar um loop que itere sobre todas que as ocorrências da letra a que ele encontrado.

  3. O compilador salva a classe do scanner compilado para uso futuro.

  4. O compilador instancia a classe do scanner compilado e executa o código no domínio do aplicativo corrente.

  5. O compilador processa um uso subseqüente da mesma expressão regular no código-fonte do usuário.

  6. O compilador recupera a classe do scanner compilado para a expressão regular, ele instancia e executa o código no domínio do aplicativo corrente.

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 do scanner.No entanto, usos subseqüentes da expressão regular mesmo são executados com eficiência.Para expressões regulares que são usadas com freqüência, a compilação única penalidade é insignificante porque uma melhoria significativa no time de execução possível.

Consulte também

Outros recursos

Emitindo Métodos Dinâmicos e Assemblies

Expressões Regulares do .NET Framework

Usando o reflexão Emit