Información general sobre la compilación de ASP.NET

Actualización: noviembre 2007

Para que el código de aplicación atienda las solicitudes de los usuarios, ASP.NET debe compilar primero el código en uno o más ensamblados. Los ensamblados son archivos que tienen la extensión de nombre de archivo .dll. Puede escribir el código de ASP.NET en muchos lenguajes diferentes, como Visual Basic, C#, J# y otros. Cuando se compila el código, se traduce en una representación independiente del lenguaje y de la CPU llamado Lenguaje intermedio de Microsoft (MSIL). En tiempo de ejecución, MSIL se ejecuta en el contexto de .NET Framework, que traduce MSIL en instrucciones específicas de la CPU para el procesador en el equipo que ejecuta la aplicación.

Compilar el código de la aplicación presenta muchas ventajas, entre las que se incluyen:

  • **Rendimiento   ** El código compilado es mucho más rápido que los lenguajes de scripting como ECMAScript o VBScript porque se trata de una representación más parecida al código máquina y no requiere un análisis adicional.

  • **Seguridad   ** En el código compilado es más difícil aplicar técnicas de ingeniería inversa que en el código fuente sin compilar porque carece de la legibilidad y abstracción de un lenguaje de alto nivel. Además, hay herramientas de ofuscación que hacen que el código compilado sea incluso más resistente a las técnicas de ingeniería inversa.

  • Estabilidad   El código se comprueba en tiempo de compilación en busca de errores de sintaxis, seguridad de tipos y otros problemas. Detectando estos errores en tiempo de generación se pueden eliminar muchos errores en el código.

  • Interoperabilidad   Puesto que el código MSIL admite todos los lenguajes .NET, es posible utilizar ensamblados, con un determinado código, escritos originalmente en otros lenguajes. Por ejemplo, si escribe una página Web ASP.NET en C#, puede agregar una referencia a un archivo .dll que se haya escrito en Visual Basic.

La arquitectura de compilación de ASP.NET incluye varias características, entre las que se incluyen:

  • Compatibilidad con varios lenguajes.

  • Compilación automática.

  • Implementación flexible.

  • Sistema de generación extensible.

Las siguientes secciones describen cada una de estas características.

Compatibilidad con varios lenguajes

En ASP.NET 2.0 se pueden utilizar lenguajes diferentes como Visual Basic y C# en la misma aplicación porque ASP.NET creará varios ensamblados, uno para cada lenguaje. Para código almacenado en la carpeta App_Code, puede especificar una subcarpeta para cada lenguaje. Para obtener más información sobre la carpeta App_Code , vea Carpetas de código compartido en sitios Web ASP.NET.

Compilación automática

ASP.NET compila automáticamente el código de su aplicación y cualquier recurso dependiente la primera vez que un usuario solicita un recurso en el sitio Web. En general, ASP.NET crea un ensamblado para cada directorio de aplicación (como App_Code) y uno para el directorio principal. (Si los archivos en un directorio están en lenguajes de programación diferentes, entonces, se crearán ensamblados independientes para cada lenguaje.) Puede especificar los directorios que se compilan en los ensamblados únicos en la sección Compilation del archivo Web.config.

Implementación flexible

Dado que ASP.NET compila su sitio Web la primera vez que un usuario lo solicita, simplemente puede copiar el código fuente de su aplicación en el servidor Web de producción. Sin embargo, ASP.NET también proporciona opciones de precompilación que permiten compilar un sitio Web antes de haberlo implementado o compilarlo una vez implementado pero antes de que un usuario lo solicite. La precompilación tiene varias ventajas. Puede mejorar el rendimiento de su sitio Web cuando recibe la primera solicitud porque no se producirá ningún retraso mientras ASP.NET compila el sitio. Precompilar también puede ayudarle a encontrar errores que de otra manera solo se encontrarían cuando un usuario solicita una página. Finalmente, si se precompila el sitio Web antes de implementarlo, es posible implementar los ensamblados en lugar del código fuente.

Puede precompilar un sitio Web utilizando el compilador ASP.NET (ASPNET_Compiler.exe). Esta es la herramienta que proporciona las opciones de precompilación siguientes:

  • Compilación en contexto   Esta opción realiza la misma compilación que durante la compilación dinámica. Utilice esta opción para compilar un sitio Web que ya se ha implementado a un servidor de producción.

  • Precompilación completa no actualizable   Se puede utilizar para compilar una aplicación y, a continuación, copiar el resultado compilado en el servidor de producción. Todo el código de la aplicación, el marcado y el código de la interfaz de usuario se compila en ensamblados. Los archivos de los marcadores de posición como las páginas .aspx todavía existen por lo que puede realizar tareas específicas del archivo como configurar permisos pero los archivos contienen código no actualizable. Para actualizar cualquier página o cualquier código, debe precompilar de nuevo el sitio Web y volver a implementarlo.

  • Precompilación actualizable   Es similar a la precompilación completa no actualizable, salvo que los elementos de la interfaz de usuario como las páginas .aspx y los controles .ascx retienen todo el marcado, el código de la interfaz de usuario y el código en línea, si lo hubiera. Puede actualizar el código en el archivo una vez que se ha implementado; ASP.NET detectará los cambios al archivo y lo volverá a compilar. Tenga en cuenta que el código en un archivo de código subyacente (archivo .vb o .cs) generó ensamblados durante la precompilación, y por lo tanto, no puede cambiarlo sin volver a realizar los pasos de precompilación e implementación.

Para obtener más información, vea Información general sobre la precompilación de ASP.NET.

Sistema de generación extensible

ASP.NET utiliza las clases BuildProvider para generar elementos como páginas .aspx, archivos .ascx y recursos globales. Se puede extender y personalizar el sistema de generación de ASP.NET para compilar los recursos personalizados creando clases que heredan de la clase BuildProvider. Por ejemplo, es posible agregar un tipo de archivo nuevo y, a continuación, escribir una clase BuildProvider que genere este tipo concreto.

Vea también

Referencia

Elemento compilation (Esquema de configuración de ASP.NET)