Páginas y controles compilados al vuelo con ASP.NET
Noviembre 29th, 2005 - [Enlace local]
A la hora de desarrollar páginas web en .NET es posible hacer que las páginas y los controles estén compilados y con toda la lógica en una DLL, o hacer que las páginas y los controles se compilen al vuelo conforme se van solicitando por los usuarios, quedando disponibles a partir de entonces para sucesivas peticiones. Dentro de la opción de compilación al vuelo podemos tener la lógica y la presentación (HTML) juntas en un mismo archivo, o en diferentes. Voy a tratar únicamente la forma basada en archivos independientes, ya que es la opción predeterminada en Visual Studio, SharpDevelop, además de propiciar una mayor separación entre lógica y presentación, lo cual incrementa la mantenibilidad del proyecto.
Ambas aproximaciones, compilación estática o al vuelo, tienen sus puntos fuertes así como algunos inconvenientes. La opción de tener toda la lógica compilada nos aporta una mayor velocidad desde el momento inicial en el que se arranca la aplicación, pero en contra nos obliga a tener que recompilar la aplicación o alguna parte de ella y generar una nueva DLL cada vez que se realiza un cambio, implicando un reinicio de la aplicación con el coste que ello supone.
Por contra la opción basada en compilación al vuelo, on the fly
en inglés, nos permite modificar la lógica de cualquier página y control sin tener que recompilar la aplicación ni tener que reiniciar la aplicación. Sin embargo tiene como desventaja que el arranque de la aplicación será algo más pesado, ya que ninguna página o control estará compilado y por lo tanto será necesario compilarlos conforme se vayan solicitando, incrementando los requisitos del servidor en esos momentos.
En lo que a mi respecta, la mayoría de los proyectos que realizo últimamente los hago utilizando compilación al vuelo, a pesar de que al comienzo utilizaba la compilación estática. El motivo principal que propició este cambio fue la facilidad de mantenimiento que aporta la compilación al vuelo, aunque en ningún caso debería debería tomarse esto como una regla ya que cada proyecto es un mundo.
A continuación voy a explicar cómo hacer que las páginas y controles se compilen al vuelo, detallando algunos problemas con los que nos podemos encontrar y posibles soluciones.