Proyectos de Aplicación Web vs. Proyectos de Sitio Web (Web Application Projects vs. Web Site Projects)

Los proyectos de Aplicación Web hicieron su aparición como un add-in para Visual Studio 2005, luego debido a su gran difusión se incorporó como parte del Service Pack 1 para visual Studio 2005. Provee un modelo de proyecto Web similar al modelo de proyecto Web de Visual Studio 2003. Proporciona la posibilidad de definir una aplicación Web mediante un proyecto (.csproj o .vbproj), tal como era habitual en las versiones previas del .NET Framework, lo cual garantiza que todo el proyecto se compilará en un único ensamblado.

El objetivo de los proyectos de aplicación Web es dar respuesta a las peticiones de los usuarios. Algunos desarrolladores encontraron que la migración de aplicaciones de Visual Studio 2003 hacia el nuevo modelo de sitios web de Visual Studio 2005 presentaba muchos problemas haciéndolo en algunos casos impracticables, especialmente porque la compilación en el nuevo modelo de sitios Web de Visual Studio 2005 creaba múltiples ensamblados.

El nuevo modelo de proyectos de aplicación Web provee la misma semántica de los proyectos Webs de Visual Studio 2003. Esto incluye la estructura basadas en archivos de proyecto y el modelo de compilación donde todo el código del proyecto es compilado en un único ensamblado. Sin embargo, el nuevo tipo de proyecto pone a nuestra disposición todas las nuevas características de Visual Studio 2005 (Refactoring, diagramas de clase, desarrollo de pruebas, genéricos, etc.) y de ASP .NET 2.0 (páginas maestras, controles de datos, membresía e identidad, administración de roles, Web Parts, personalización, navegación de sitio, temas, etc.).

El modelo de proyectos de aplicación Web en visual Studio 2005 también hace innecesario dos requerimientos de Visual Studio 2003.

• Uso de extensiones de servidor de FrontPage. Ahora ya no es un requisito, aunque aún es soportado si el sitio Web aún utiliza estas extensiones.
• Uso de Internet Information Server (IIS). El nuevo tipo de proyectos soporta tanto IIS como el servidor ASP .NET de desarrollo incluido en Visual Studio 2005.

¿Cuál de los tipos de proyectos Web debemos utilizar?
Las siguientes tablas comparativas describen las diferencias entre los dos tipos de proyectos Web.

Opción o tarea

Proyectos de Aplicación Web

Proyectos de Sitio Web

Necesita migrar aplicaciones grandes de Visual Studio 2003.

X

 

Preferencia por el modelo de página simple sobre el modelo de código detrás.

 

X

Preferencia por la compilación dinámica y por trabajar sin generar todo el sitio por cada página modificada.

 

X

Necesita controlar los nombres de los ensamblados de salida.

X

 

Necesita generar un ensamblado por cada página

 

X

Necesita que clases independientes hagan referencia a páginas y controles de usuario Web.

X

 

Necesita generar una aplicación Web utilizando múltiples proyectos Web.

X

 

Necesita agregar pasos antes de generar (pre-build) y después de generar (post-build), durante el proceso de compilación.

X

 

Necesita abrir y editar cualquier directorio, como un proyecto Web, sin crear un archivo de proyecto.

 

X

Escenario

Proyectos de Aplicación Web

Proyectos de Sitio Web

Definición de proyecto

Similar a Visual Studio 2003. Solo archivos que son referenciados en el archivo de proyecto forman parte del proyecto, se muestran en el explorador de soluciones, y son compilados durante el proceso de generación. Debido a que existe un archivo de proyecto, algunos escenarios son más fáciles de implementar.

Se puede excluir archivos del proyecto y del programa de control de versiones con facilidad.

Los Proyectos de Sitio Web utilizan la estructura de directorios para definir los contenidos del proyecto. No existe archivo de proyecto y todos los archivos de la carpeta forman parte del proyecto.

Este tipo de proyecto es deseable si se tiene una estructura de carpetas que representa una aplicación ASP .NET, que se necesita editar en Visual Studio 2005 sin crear explícitamente un archivo de proyecto.

Compilación y resultado de generación.

El modelo de compilación para proyectos de aplicación Web es muy similar al modelo de Visual Studio 2003.

Todos los archivos de clases de código detrás y los archivos de clases independientes en el proyecto son compilados en un único ensamblado, el cual es colocado en la carpeta Bin. Puesto que se trata de un ensamblado único se puede especificar atributos como el nombre y versión del ensamblado, así como la localización del ensamblado de salida.

Otros tipos de escenarios son mejor implementados, como el patrón Modelo Vista Controlador (MVC), puesto que permite que las clases independientes en el proyecto hagan referencia a páginas y controles de usuario web.

El comando de Generación compila el proyecto de sitio Web únicamente para verificar errores de sintaxis. Para ejecutar el proyecto de sitio Web, se despliega los archivos de código fuente y se confía en la compilación dinámica de ASP .NET para compilar las páginas y clases de la aplicación.

Alternativamente, se puede precompilar el sitio para mejorar la performance, para lo cual se utiliza la misma semántica de la compilación dinámica.

Desarrollo iterativo

Para ejecutar y depurar páginas, se necesita generar todo el proyecto de aplicación Web. Generar todo el proyecto de aplicación Web usualmente es rápido, puesto que Visual Studio emplea un modelo de generación incremental, el cual compila solo los archivos que han sido modificados.

Se pueden configurar las opciones de generación de Visual Studio 2005 para cuando se ejecute un sitio web: Generar sitio web, una página individual, o ninguno en absoluto, en el último caso, cuando se ejecuta un sitio Web, Visual Studio simplemente lanza el explorador y le pasa la página actual o la página de inicio. La solicitud luego invoca la compilación dinámica de ASP .NET.

Por defecto, Visual Studio compila el proyecto de sitio Web completo en cualquier momento que se ejecute o depure una página. Esto se efectúa para identificar los errores de tiempo de compilación en cualquier lugar del sitio. Sin embargo una generación completa del sitio puede disminuir significativamente la velocidad del proceso iterativo de desarrollo, por tal motivo se recomienda cambiar las opciones de generación del proyecto para que compile sólo la página actual cuando se ejecute o depure.

Despliegue

Peusto que todos los archivos de clases son compilados en un ensamblado único, solo se necesita desplegar este ensamblado, junto con los archivos .aspx y .ascx, además de otros archivos estáticos de contenido.

En este modelo, los archivos .aspx no son compilados hasta que son ejecutados en el navegador. Sin embargo cuando se utiliza un proyecto de instalación Web, los archivos .aspx también pueden ser compilados e incluidos en el único ensamblado para su despliegue.

Cada vez que se despliegue el ensamblado único producido en este modelo, se reemplaza el código para todas las páginas del proyecto.

Tanto los archivos .aspx como los archivos de código detrás pueden ser compilados en ensamblados utilizando el comando “Publicar Sitio Web” de Visual Studio (El comando “Generar” no crea un conjunto de ensamblados que se puedan desplegar). Las opciones actualizables de publicación soportan únicamente compilación de archivos de código detrás, mientras que deja sin cambios a los archivos .aspx para el despliegue.

El modo de precompilado por defecto produce varios ensamblados en la carpeta Bin, típicamente uno por carpeta. La opción de nombres-fijos produce un ensamblado por página o control de usuario Web y pueden ser utilizadas para crear versiones desplegables de páginas individuales. Sin embargo, la opción de nombres-fijos incrementa el número de ensamblados y puede resultar en un incremento del uso de memoria.

Migración a partir de Visual Studio .NET 2003

Puesto que el modelo de proyecto de aplicación Web es el mismo que el de Visual Studio .NET 2003, la migración es generalmente simple y usualmente no requiere ninguna reestructuración de la aplicación.

La opción de compilación para Proyectos de Sitio Web es significativamente diferente a Visual Studio .NET 2003. Un asistente de conversión está disponible para migrar proyectos web existentes de Visual Studio 2003 a proyectos de sitios Web. Por razones obvias es usual la necesidad de arreglos manuales adicionales después de la conversión.

Para la mayoría de los escenarios, es preferible migrar a proyectos de aplicación Web.

Los cuadros comparativos muestran en detalle las diferencias entre los dos tipos de proyectos, para proyectos nuevos yo prefiero usar el nuevo modelo: Proyectos de Aplicación Web (Web Application Projects), en el caso de tener proyectos ya avanzados con el modelo de Proyectos de Sitio Web (Web Site Projects) no recomiendo la migración al nuevo modelo porque esta labor no es trivial y a menudo hay que realizar cambios manuales.

Puede consultar el artículo original en Ingles en el siguiente enlace: Introduction to Web Application Projects

About these ads

8 comments so far

  1. Carlos on

    Excelente comparación entre los dos tipos de modelos, muchas gracias hace tiempo buscaba algo asi.

  2. Luis Alberto Wright on

    aradecido me ha resuelto tremendo problema en la maestria

  3. Alejandro Martinez on

    Muy buena comparacion, solo tuve un incoveniente, al crear las paginas maestras en Proyectos de Aplicación Web es necesario introducir codigo mientras que en Proyectos de Sitio Web es de forma natural la herencia.

    Saludos buen articulo

  4. Juan Pelaez on

    Con el crecimiento de los proyectos de desarrollo para sharepoint se encuentra otra caracteristica interesante que pone nuevamente en el foco los proyectos web applications. Todo relacionado con el momento del deployment del proyecto.

    Aqui se puede encontrar más información.
    http://www.juanpelaez.com/Blog/2008/02/12/VS2005WebApplicationProjectsOWebSiteProjectsYSharePoint.aspx

    Saludos,

  5. Arturo Laflor on

    Felicitaciones por la comparación entre ambos tipos. Muy buen trabajo.

    Tengo un problema relacionado con esto, no lo he resulto, a ver si alguien puede ayudarme.

    Necesito abrir el excel desde una aplicación hecha con ASP.NET.

    En un proyecto de aplicación si lo abre, pero en un proyecto de Sitio Web no. Manda un error relacionado con privilegios.

    Gracias por su ayuda.

  6. 1 vago on

    jaJAJAJ me sirvio pa la klase d narea!! VIVA EL METAL!!! VIVA ECLIPSE!!

  7. Victor E. Diaz on

    Tenia un gran signo de interrogacion en la cabeza con esto, hasta que tuve que migrar un sitio de VS2008 a VS2010 comence a buscar porque me daba 1600 bugs, converti el sitio a una aplicacion y todo se resolvio, gracias por esta excelente aportacion.

  8. ferarias on

    Muchas gracias, me ha resultado muy útil tu comparativa


Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

%d personas les gusta esto: