¿Sitio web ASP.NET o aplicación web ASP.NET?

Resuelto Robert S. asked hace 15 años • 23 respuestas

Cuando comienzo un nuevo proyecto ASP.NET en Visual Studio, puedo crear una aplicación web ASP.NET o puedo crear un sitio web ASP.NET.

¿Cuál es la diferencia entre la aplicación web ASP.NET y el sitio web ASP.NET? ¿Por qué elegiría uno sobre otro?

¿La respuesta es diferente según la versión de Visual Studio que estoy usando?

Robert S. avatar Dec 29 '08 23:12 Robert S.
Aceptado

Sitio web:

El proyecto del sitio web se compila sobre la marcha. Terminarás con muchos más archivos DLL, lo que puede ser una molestia. También genera problemas cuando tiene páginas o controles en un directorio que necesitan hacer referencia a páginas y controles en otro directorio, ya que es posible que el otro directorio aún no esté compilado en el código. Otro problema puede estar en la publicación.

Si no se le dice a Visual Studio que reutilice los mismos nombres constantemente, generará nuevos nombres para los archivos DLL generados por las páginas todo el tiempo. Esto puede llevar a tener varias copias cercanas de archivos DLL que contengan el mismo nombre de clase, lo que generará muchos errores. El proyecto del sitio web se introdujo con Visual Studio 2005, pero resultó no ser popular.

Aplicación web:

El Proyecto de aplicación web se creó como un complemento y ahora existe como parte del SP 1 para Visual Studio 2005. Las principales diferencias son que el Proyecto de aplicación web se diseñó para funcionar de manera similar a los proyectos web que se incluyen con Visual Studio 2003. Compile la aplicación en un único archivo DLL en el momento de la compilación. Para actualizar el proyecto, se debe volver a compilar y publicar el archivo DLL para que se produzcan cambios.

Otra característica interesante del proyecto de aplicación web es que es mucho más fácil excluir archivos de la vista del proyecto. En el proyecto del sitio web, a cada archivo que excluye se le cambia el nombre con una palabra clave excluida en el nombre del archivo. En el proyecto de aplicación web, el proyecto simplemente realiza un seguimiento de qué archivos incluir/excluir de la vista del proyecto sin cambiarles el nombre, lo que hace que las cosas estén mucho más ordenadas.

Referencia

El artículo ASP.NET 2.0: proyecto de sitio web versus aplicación web también brinda razones sobre por qué usar uno y no el otro. He aquí un extracto del mismo:

  • ¿Necesita migrar grandes aplicaciones de Visual Studio .NET 2003 a VS 2005? Utilice el proyecto de aplicación web.
  • ¿Quiere abrir y editar cualquier directorio como un proyecto web sin crear un archivo de proyecto? utilizar el proyecto del sitio web.
  • ¿Necesita agregar pasos previos y posteriores a la compilación durante la compilación? utilizar el proyecto de aplicación web.
  • ¿Necesita crear una aplicación web utilizando varios proyectos web? Utilice el proyecto de aplicación web.
  • ¿Quieres generar un ensamblaje para cada página? utilizar el proyecto del sitio web.
  • ¿Prefiere la compilación dinámica y trabajar en páginas sin crear un sitio completo en cada vista de página? utilizar el proyecto del sitio web.
  • ¿Prefiere el modelo de código de una sola página al modelo de código subyacente? utilizar el proyecto del sitio web.

Proyectos de aplicaciones web versus proyectos de sitios web (MSDN) explica las diferencias entre el sitio web y los proyectos de aplicaciones web. Además, se analiza la configuración a realizar en Visual Studio.

Andreas Grech avatar Dec 29 '2008 16:12 Andreas Grech

El sitio web es lo que se implementa en un servidor web ASP.NET como IIS. Sólo un montón de archivos y carpetas. No hay nada en un sitio web que lo vincule a Visual Studio (no hay ningún archivo de proyecto). La generación de código y la compilación de páginas web (como .aspx, .ascx, .master) se realizan dinámicamente en tiempo de ejecución , y el marco detecta los cambios en estos archivos y los vuelve a compilar automáticamente. Puede colocar el código que desea compartir entre páginas en la carpeta especial App_Code, o puede precompilarlo y colocar el ensamblaje en la carpeta Bin.

La aplicación web es un proyecto especial de Visual Studio. La principal diferencia con los sitios web es que cuando construyes el proyecto, todos los archivos de código se compilan en un único ensamblado, que se coloca en el directorio bin. No implementa archivos de código en el servidor web. En lugar de tener una carpeta especial para archivos de código compartido, puede colocarlos en cualquier lugar, tal como lo haría en la biblioteca de clases. Debido a que las aplicaciones web contienen archivos que no están destinados a implementarse, como archivos de proyecto y de código, existe un comando Publicar en Visual Studio para generar un sitio web en una ubicación específica.

App_Code frente a Bin

Implementar archivos de código compartido generalmente es una mala idea, pero eso no significa que deba elegir la aplicación web. Puede tener un sitio web que haga referencia a un proyecto de biblioteca de clases que contenga todo el código del sitio web. Las aplicaciones web son solo una forma conveniente de hacerlo.

Código detrás

Este tema es específico de los archivos .aspx y .ascx. Este tema es cada vez menos relevante en nuevos marcos de aplicaciones como ASP.NET MVC y ASP.NET Web Pages que no utilizan archivos de código subyacente.

Al tener todos los archivos de código compilados en un solo ensamblado, incluidos los archivos de código subyacente de páginas .aspx y controles .ascx, en las aplicaciones web debe reconstruir cada pequeño cambio y no puede realizar cambios en vivo. Esto puede ser una verdadera molestia durante el desarrollo, ya que hay que seguir reconstruyendo para ver los cambios, mientras que con los sitios web el tiempo de ejecución detecta los cambios y las páginas/controles se recompilan automáticamente.

Hacer que el tiempo de ejecución administre los ensamblados de código subyacente es menos trabajo para usted, ya que no necesita preocuparse por dar nombres únicos a las páginas/controles ni por organizarlos en diferentes espacios de nombres.

No estoy diciendo que implementar archivos de código sea siempre una buena idea (especialmente no en el caso de archivos de código compartido), pero los archivos de código subyacente solo deben contener código que realice tareas específicas de la interfaz de usuario, controladores de eventos de conexión, etc. Su aplicación debe ser en capas para que el código importante siempre termine en la carpeta Bin. Si ese es el caso, la implementación de archivos de código subyacente no debería considerarse dañina.

Otra limitación de las Aplicaciones Web es que sólo se puede utilizar el idioma del proyecto. En los sitios web puede tener algunas páginas en C#, otras en VB, etc. No es necesario soporte especial de Visual Studio. Esa es la belleza de la extensibilidad del proveedor de compilación.

Además, en aplicaciones web no obtiene detección de errores en páginas/controles ya que el compilador solo compila sus clases de código subyacente y no el código de marcado (en MVC puede solucionar esto usando la opción MvcBuildViews), que se compila en tiempo de ejecución.

Estudio visual

Debido a que las aplicaciones web son proyectos de Visual Studio, obtienes algunas funciones que no están disponibles en los sitios web. Por ejemplo, puede utilizar eventos de compilación para realizar una variedad de tareas, por ejemplo, minimizar y/o combinar archivos Javascript.

Otra característica interesante introducida en Visual Studio 2010 es la transformación Web.config .Esto tampoco está disponible en los sitios web.Ahora funciona con sitios web en VS 2013.

Crear una aplicación web es más rápido que crear un sitio web, especialmente para sitios grandes. Esto se debe principalmente a que las aplicaciones web no compilan el código de marcado. En MVC, si configura MvcBuildViews en verdadero, compila el código de marcado y obtiene detección de errores, lo cual es muy útil. La desventaja es que cada vez que crea la solución, crea el sitio completo, lo que puede ser lento e ineficiente, especialmente si no está editando el sitio. Me encuentro activando y desactivando MvcBuildViews (lo que requiere la descarga del proyecto). Por otro lado, con Sitios Web puedes elegir si quieres construir el sitio como parte de la solución o no. Si decide no hacerlo, crear la solución es muy rápido y siempre puede hacer clic en el nodo Sitio web y seleccionar Crear, si ha realizado cambios.

En un proyecto de aplicación web MVC, tiene comandos y cuadros de diálogo adicionales para tareas comunes, como 'Agregar vista', 'Ir a vista', 'Agregar controlador', etc. Estos no están disponibles en un sitio web MVC.

Si utiliza IIS Express como servidor de desarrollo, en Sitios Web puede agregar directorios virtuales. Esta opción no está disponible en Aplicaciones Web.

La restauración de paquetes NuGet no funciona en sitios web, debe instalar manualmente los paquetes enumerados en packages.configPackage Restore ahora funciona con sitios web que inician NuGet 2.7

Max Toro avatar Mar 09 '2009 19:03 Max Toro