Proyectos de aplicación web frente a proyectos de sitio web en Visual Studio

En Visual Studio puede crear proyectos de aplicación Web o proyectos de sitio Web. Cree o abra un proyecto de aplicación Web eligiendo Nuevo proyecto o Abrir proyecto en el menú de Visual Studio Archivo . Cree o abra un proyecto de sitio Web eligiendo Nuevo sitio web o Abrir sitio web en el menú archivo.

Cada tipo de proyecto tiene ventajas y desventajas. Por eso, es conveniente conocer las diferencias entre ellos, para poder seleccionar el tipo de proyecto que mejor se ajuste a sus necesidades. Antes de crear un proyecto, debe seleccionar el tipo de proyecto adecuado, dado que no resulta práctico convertir un tipo en otro.

Nota

En algunos escenarios, no tiene una opción.Por ejemplo, si desea crear una aplicación ASP.NET MVC, debe utilizar un proyecto de aplicación Web.

Este tema contiene las siguientes secciones:

  • Escenarios

  • Resumen de las diferencias

  • Estructura del archivo de proyecto

  • Compilación

  • Implementación

Escenarios

Escenarios en los que los proyectos de aplicación Web se incluyen choice preferida lo siguiente:

  • Desea poder utilizar la característica de Editar y continuar del depurador de Visual Studio.

  • Desea ejecutar pruebas unitarias en el código que está en los archivos de clase asociados a páginas ASP.NET.

  • Desea hacer referencia a las clases que están asociadas con las páginas y los controles de usuario desde clases independientes.

  • Desea establecer dependencias de proyecto entre varios proyectos web.

  • Desea que el compilador cree un ensamblado único para todo el sitio.

  • Desea controlar el nombre del ensamblado y número de versión que se generan para el sitio.

  • Desea usar MSBuild o Team Build para compilar el proyecto. Por ejemplo, puede agregar pasos de prebuild y de postbuild.

  • Desea evitar situar código fuente en un servidor de producción.

  • Desea utilizar las herramientas de implementación automatizada que están disponibles en Visual Studio.

Entre los escenarios en los que es preferible usar proyectos de sitio web se incluyen los siguientes:

  • Desea incluir C# y Visual Basic codifica en un único proyecto web. (De forma predeterminada, se compila una aplicación Web basándose en la configuración de idioma en el archivo de proyecto. Pueden hacerse excepciones, pero resulta relativamente complicado).

  • Desea abrir el sitio de producción en Visual Studio y actualizarlo en tiempo real a través del FTP.

  • No desea tener que compilar el proyecto de forma explícita para implementarlo.

  • Si precompila el sitio, deseará que el compilador cree varios ensamblados para el sitio, lo que puede incluir un ensamblado por página o control de usuario, o uno o varios ensamblados por carpeta.

  • Desea poder actualizar los archivos individuales en producción con solo copiar las nuevas versiones en el servidor de producción o editar los archivos directamente en dicho servidor.

  • Si precompila el sitio, desea poder actualizar los páginas Web ASP.NET individuales (archivos .aspx) sin tener que volver a compilar el sitio completo.

  • Prefiere mantener el código fuente en el servidor de producción porque puede servirle de copia de seguridad adicional.

Resumen de las diferencias

En la tabla siguiente se proporciona un resumen de las diferencias principales.

Área

Proyectos de aplicación web

Proyectos de sitio web

Estructura del archivo de proyecto

Un archivo de proyecto de Visual Studio (.csproj o .vbproj) almacena información sobre el proyecto, como la lista de archivos incluidos en este y cualquier referencia entre proyectos.

No hay ningún archivo de proyecto (.csproj o .vbproj). Todos los archivos de una estructura de carpetas se incluyen automáticamente en el sitio.

Compilación

  • El código fuente se compila explícitamente en el equipo que se usa para el desarrollo o el control de código fuente.

  • De forma predeterminada, la compilación de los archivos de código (a excepción de los archivos .aspx y .ascx) genera un ensamblado único.

  • Normalmente, ASP.NET compila el código fuente de forma dinámica (automáticamente) en el servidor la primera vez que se recibe una solicitud después de haberse instalado o actualizado el sitio.

    Puede precompilar el sitio (compilarlo previamente en un equipo de desarrollo o en el servidor).

  • De forma predeterminada, la compilación genera múltiples ensamblados.

Espacios de nombres

Los espacios de nombres explícitos se agregan a las páginas, los controles y las clases de forma predeterminada.

Los espacios de nombres explícitos no se agregan a las páginas, los controles y las clases de forma predeterminada, pero se pueden agregar manualmente.

Implementación

  • Copie el ensamblado en un servidor. El ensamblado se genera al compilar la aplicación.

  • Visual Studio proporciona herramientas que se integran con el web deploy (la herramienta de implementación web de IIS) para automatizar muchas de las tareas de implementación.

  • Copie los archivos de código fuente de la aplicación en un equipo que tenga instalado IIS.

  • Si el sitio se precompila en un equipo de desarrollo, copie los ensamblados generados por la compilación en el servidor IIS.

  • Visual Studio proporciona herramientas para la implementación, pero no automatizan tantas tareas de implementación como las herramientas disponibles para los proyectos de aplicación Web.

Estructura del archivo de proyecto

Los proyectos de aplicación web usan los archivos de proyecto de Visual Studio (.csproj o .vbproj) para realizar un seguimiento de la información sobre el proyecto. Esto permite especificar que los archivos se incluyen en o excluido del proyecto y, por tanto que los archivos se compilan durante una compilación.

Para los proyectos de sitio Web, todos los archivos en una estructura de carpetas automáticamente se consideran incluidos en el sitio Web. Si desea excluir parte de la compilación, debe quitar el archivo del proyecto de sitio Web o cambiar su extensión de nombre de archivo a una extensión que no esté compilada y no es servida por IIS.

Una ventaja de usar archivos de proyecto en los proyectos de aplicación Web es la siguiente:

  • Es fácil quitar archivos del sitio temporalmente pero, aun así, asegúrese de no perder el control sobre ellos, dado que permanecen en la estructura de carpetas. Por ejemplo, si una página no está lista para implementarla, puede excluirla temporalmente de la compilación sin eliminarla de la estructura de carpetas. Puede implementar el ensamblado compilado y, a continuación, incluir de nuevo el archivo en el proyecto. Esto es especialmente importante si trabaja con un repositorio de control de código fuente.

Una ventaja de usar la estructura de carpetas sin archivos de proyecto en los proyectos de sitio web es la siguiente:

  • No tiene que administrar la estructura del proyecto exclusivamente en Visual Studio. Por ejemplo, puede copiar archivos en el proyecto o eliminarlos del proyecto con el Explorador del archivo.

Compilación

Para los proyectos de aplicación Web, normalmente se compila el proyecto en Visual Studio o mediante el compilador de lotes ASP.NET en un equipo que no sea el servidor IIS de producción. Todos los archivos de clase de código subyacente y los archivos de clase independiente del proyecto se compilan en un único ensamblado, que se coloca en la carpeta Bin del proyecto de aplicación Web. (Los archivos .aspx y .ascx se compilan dinámicamente de manera similar a qué se hace para los proyectos de sitio Web).

Para los proyectos de sitio Web, no es necesario compilar el proyecto manualmente. los proyectos de sitio Web son compilados normalmente dinámicamente por ASP.NET (en el equipo de desarrollo y el servidor IIS de producción). Puede elegir entre el modo de compilación por lotes, que normalmente genera un ensamblado por carpeta, y el modo de compilación fija, que normalmente genera un ensamblado para cada página o control de usuario.

Las ventajas del modelo de compilación de los proyectos de aplicación Web incluyen:

  • Puede usar MSBuild para crear un proceso de compilación por lotes personalizado.

  • Es fácil especificar atributos de ensamblado, como el nombre y la versión.

  • Compilar de antemano garantiza que los usuarios no tienen que esperar mientras el sitio se compila en el servidor de producción. (Si el sitio es muy grande, la compilación dinámica de un proyecto de sitio Web puede tardar un tiempo considerable. La compilación dinámica se produce cuando se recibe una solicitud de un recurso de sitio tras una actualización del sitio y la solicitud que desencadena la compilación puede verse retrasada mientras se compilan los recursos necesarios. Si el retraso es inaceptable, puede precompilar el sitio. Sin embargo, de esta forma se pierden algunas de las ventajas de la compilación dinámica).

  • Tiene un control absoluto sobre las ubicaciones donde se colocan los archivos de código en la estructura de carpetas del proyecto y la forma en que las clases del proyecto se hacen referencia entre sí. (La compilación dinámica requiere que el código fuente de cualquiera de las clases que se usan en el sitio esté en la carpeta App_Code. No se puede hacer referencia a una clase de controles de página ni de usuario desde una clase en App_Code).

Entre las ventajas del modelo de compilación de los proyectos de sitio web se incluyen las siguientes:

  • Se pueden probar páginas específicas sin tener en cuenta el estado de otras páginas. Esto se debe a que la ejecución de una página individual no requiere la compilación correcta del sitio al completo, solo de la página y de los componentes de los que dependa, como el código de la carpeta App_Code o el archivo Global.asax. (En un proyecto de aplicación Web, si existen errores de compilación en cualquier parte del sitio, no puede crear el ensamblado y por tanto no puede probar las partes del sitio que compilan.)

  • Actualizar un sitio web en producción es muy sencillo. Puede actualizar archivos de código fuente individuales en el servidor de producción sin necesidad de volver a compilar el sitio explícitamente. Puede actualizar archivos individuales listos para la implementación aun cuando otros archivos no estén listos debido a errores de compilación. También puede abrir el sitio web en el servidor IIS de producción directamente en Visual Studio y actualizar dicho sitio en tiempo real.

  • Precompilar en múltiples ensamblados puede tener ventajas de rendimiento en algunos escenarios. Un ejemplo típico es un sitio con muchas páginas, para las que se ha escrito una gran cantidad de código. La mayoría de las páginas no se suelen solicitar, solo algunas se usan con frecuencia. Si se compila un sitio como este en varios ensamblados, el servidor de producción puede cargar solamente los ensamblados necesarios para las solicitudes actuales. Si una página no se solicita, su ensamblado correspondiente no se carga.

Nota

No hay ninguna diferencia de rendimiento entre un proyecto de sitio Web y un proyecto de aplicación Web.Las únicas excepciones significativas son las que se han indicado y, a efectos prácticos, solo se aplican a sitios de gran tamaño.La primera solicitud al sitio Web podría requerir la compilación, lo que puede producir un retraso.Y si el sitio Web se está ejecutando en un servidor IIS con poca memoria, la inclusión del sitio completo en un único ensamblado podría usar más memoria de la necesaria para varios ensamblados.

Implementación

Para implementar un proyecto de aplicación Web, copie el ensamblado que se crea al compilar el proyecto en un servidor IIS. En cambio, para implementar un proyecto de sitio Web, normalmente se copian los archivos de código fuente del proyecto en un servidor IIS.

Las ventajas de la estrategia de implementación de los proyectos de aplicación Web incluyen:

  • Se puede evitar la implementación de código fuente en el servidor IIS. En algunos escenarios, como los entornos de host compartidos, puede que le preocupe el acceso no autorizado al código fuente en el servidor IIS. (Para un proyecto de sitio Web, puede evitar este riesgo precompilar en un equipo de desarrollo e implementar los ensamblados generados en lugar del código fuente. Sin embargo, en ese caso se pierden algunas de las ventajas de las actualizaciones de sitio fáciles).

  • La implementación a menudo implica otras tareas además de copiar ensamblados o código en un servidor. Por ejemplo, puede que sea necesario ejecutar scripts de base de datos en producción o cambiar las cadenas de conexión del archivo Web.config para un servidor de producción. Visual Studio proporciona herramientas como uno- clic publica ese trabajo con proyectos de aplicación Web de automatizar muchas de estas tareas. Estas herramientas no están disponibles para los proyectos de sitio Web.

Las ventajas de la estrategia de implementación para proyectos de sitio Web incluyen:

  • Si se realiza un pequeño cambio en un sitio Web, no tiene que implementar de nuevo el sitio completo. En su lugar, puede copiar simplemente el archivo o los archivos cambiados en el servidor IIS de producción. También puede editar los archivos directamente en el servidor de producción. (Dado que los archivos de código de un proyecto de aplicación Web se compilan en un único archivo de ensamblado, debe implementar el sitio completo incluso para pequeños cambios, a menos que el único cambio está en un archivo .aspx o .ascx).

Vea también

Conceptos

Mapa de contenido de implementación web para Visual Studio y ASP.NET

Otros recursos

Web Application Projects vs Web Site Projects