Compartir a través de


Escenarios de aplicación de la emisión de la reflexión

En esta sección se describen con más detalle algunos de los escenarios en los que las aplicaciones utilizan la emisión de la reflexión y métodos dinámicos.

Ejecutar un script en un explorador web

En este escenario, un explorador web carga una página HTML que contiene un programa de scripts y ejecuta el programa. Éstos son los pasos:

  1. El explorador web inicia el motor de scripts en el dominio de aplicación del explorador web.

  2. El explorador web extrae el script de la página HTML y lo pasa al motor de scripts.

  3. El motor de scripts crea un ensamblado dinámico transitorio.

  4. El motor de scripts utiliza las API de emisión de la reflexión para emitir el código en el ensamblado dinámico.

Ejecutar un script en una página ASP.NET

En este escenario, un explorador abre una página ASP.NET que contiene un programa de scripts. El programa se compila en el servidor y se ejecuta. Éstos son los pasos:

  1. ASP.NET inicia su dominio de aplicación y lanza el motor de scripts para compilar y ejecutar el programa.

  2. El motor de scripts crea un ensamblado dinámico con persistencia y un módulo dinámico con persistencia en el ensamblado dinámico.

  3. El motor de scripts compila el programa mediante las API de emisión de la reflexión y emite el código en el módulo dinámico con persistencia.

  4. El código compilado se ejecuta y se encuentra una expresión eval.

  5. El motor de scripts crea un módulo dinámico transitorio en el ensamblado dinámico para incluir el código de la expresión eval.

  6. El motor de scripts evalúa la expresión eval mediante la ejecución del módulo dinámico transitorio.

  7. ASP.NET solicita al motor de scripts que guarde en la caché el ensamblado dinámico y el módulo dinámico con persistencia de manera que no sea necesario volver a compilar el script cuando se visite la página de nuevo.

Compilar una expresión regular con la emisión de la reflexión

En este escenario, un compilador utiliza la emisión de la reflexión para compilar expresiones regulares en el código fuente. Un usuario puede declarar qué expresiones regulares se deben compilar. Éstos son los pasos:

  1. El compilador procesa el primer uso de una expresión regular en el código fuente de un usuario.

  2. El compilador utiliza la emisión de la reflexión para compilar la expresión regular en una clase escáner personalizada porque el usuario ha solicitado que se compile la expresión. Primero, la expresión regular se convierte en los códigos de operación de la expresión regular del compilador. Por ejemplo, una instrucción podría afirmar: "try to match zero or more a's" (intentar encontrar cero o más apariciones de la letra "a"). Después, los códigos de operaciones de la expresión regular se convierten en el lenguaje intermedio de Microsoft (MSIL). Por ejemplo, el compilador podría generar un bucle que recorra en iteración todas las apariciones de la letra a que haya encontrado.

  3. El compilador guarda la clase escáner compilada para uso futuro.

  4. El compilador crea una instancia de la clase escáner compilada y ejecuta el código en el dominio de aplicación actual.

  5. El compilador procesa el uso posterior de la misma expresión regular en el código fuente del usuario.

  6. El compilador recupera la clase escáner compilada para la expresión regular, crea una instancia de la misma y ejecuta el código en el dominio de la aplicación actual.

Cuando se utiliza la primera instancia de una expresión regular, el usuario hace que disminuya el rendimiento, ya que el compilador necesita compilar la expresión en una clase escáner. Sin embargo, los usos posteriores de la misma expresión regular se ejecutan con eficacia. En el caso de las expresiones regulares que se utilizan con frecuencia, la disminución del rendimiento debida a esta única compilación es insignificante, porque se puede mejorar de forma importante el tiempo de ejecución.

Vea también

Otros recursos

Emitir métodos y ensamblados dinámicos

Expresiones regulares de .NET Framework

Utilizar la emisión de la reflexión