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


Cuando inicio 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?


777
2017-12-29 16:24


origen


Respuestas:


Sitio web:

los Sitio web proyecto se compila sobre la marcha. Terminas con muchos más archivos DLL, lo que puede ser un problema. También genera problemas cuando tienes páginas o controles en un directorio que necesitan referenciar páginas y controles en otro directorio, ya que el otro directorio aún no se ha compilado en el código. Otro problema puede ser la publicación.

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

Aplicación web:

los Aplicación web El proyecto se creó como un complemento y ahora existe como parte de SP 1 para Visual Studio 2005. Las principales diferencias son el Proyecto de Aplicación Web fue diseñado para funcionar de manera similar a los proyectos web que se enviaron con Visual Studio 2003. Compilará la aplicación en un único archivo DLL en la compilación. hora. Para actualizar el proyecto, debe ser recompilado y el archivo DLL publicado para que se produzcan cambios.

Otra buena característica de la aplicación web proyecto es mucho más fácil excluir archivos de la vista del proyecto. En el Proyecto de sitio web, cada archivo que excluya se renombra con un excluido palabra clave 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 renombrarlos, hacer las cosas mucho más ordenadas.

Referencia

El artículo ASP.NET 2.0: proyecto de sitio web frente a proyecto de aplicación web también da razones sobre por qué usar uno y no el otro. Aquí hay un extracto de esto:

  • Necesita migrar aplicaciones grandes de Visual Studio .NET 2003 a VS   2005? usa el proyecto de aplicación web.
  • Desea abrir y editar cualquier directorio como un proyecto web sin   creando un archivo de proyecto? usar el sitio web   proyecto.
  • ¿Necesita agregar pasos de precompilación y postconstrucción durante la compilación?    utilizar proyecto de aplicación web.
  • Necesita construir una aplicación web usando múltiples Web   proyectos? utilizar proyecto de aplicación web.
  • ¿Desea generar un ensamblaje para cada página? utilizar el proyecto del sitio web. 
  • Prefiere la compilación dinámica y el trabajo en páginas sin construir   todo el sitio en cada vista de página? usar web   Proyecto del sitio 
  • ¿Prefiere el modelo de código de una sola página para el modelo de código subyacente? usar el sitio web   proyecto.

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, analiza la configuración que se realizará en Visual Studio.


507
2018-03-09 19:16



Sitio web es lo que implementa en un servidor web ASP.NET como IIS. Solo un montón de archivos y carpetas. No hay nada en un sitio web que lo vincule con 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) están hechas dinámicamente en tiempo de ejecución, y el marco detecta cambios en estos archivos y los vuelve a compilar automáticamente. Puedes poner el código que quieras compartir entre páginas en la carpeta especial App_Code, o puede precompilarlo y colocarlo en la carpeta Bin.

Aplicación web es un proyecto especial de Visual Studio. La principal diferencia con los sitios web es que, al construir el proyecto, todos los archivos de código se compilan en un solo ensamblaje, 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 la clase. Dado que las aplicaciones web contienen archivos que no están destinados a implementarse, como archivos de proyecto y código, hay una Publicar comando en Visual Studio para generar un sitio web en una ubicación especificada.

App_Code vs Bin

La implementación de archivos de código compartido generalmente es una mala idea, pero eso no significa que tenga que elegir la Aplicación web. Puede tener un sitio web que haga referencia a un proyecto de biblioteca de clase 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 los nuevos frameworks de aplicaciones como ASP.NET MVC y ASP.NET Web Pages que no usan código detrás de los archivos.

Al tener todos los archivos de código compilados en un solo ensamblaje, incluidos código detrás archivos de páginas .aspx y controles .ascx, en las aplicaciones web tiene que volver a compilar para cada pequeño cambio, y no puede hacer cambios en vivo. Esto puede ser un verdadero problema durante el desarrollo, ya que debe seguir reconstruyendo para ver los cambios, mientras que con los sitios web los cambios son detectados por el tiempo de ejecución y las páginas / controles se vuelven a compilar automáticamente.

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

No digo que implementar archivos de código siempre es una buena idea (especialmente no en el caso de los archivos de código compartido), pero los archivos de código subyacente solo deben contener código que realice tareas específicas de UI, manejadores de eventos cableados, 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 debe considerarse perjudicial.

Otra limitación de las aplicaciones web es que solo puede usar el idioma del proyecto. En los sitios web puede tener algunas páginas en C #, algunas en VB, etc. No necesita soporte especial de Visual Studio. Esa es la belleza de la extensibilidad del proveedor de compilación.

Además, en las aplicaciones web no obtienes detección de errores en páginas / controles ya que el compilador solo compila tu código detrás de las clases y no el código de marcado (en MVC puedes arreglar 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, usted obtiene algunas características que no están disponibles en los sitios web. Por ejemplo, puede usar eventos de compilación para realizar una variedad de tareas, p. minify y / o combine archivos Javascript.

Otra buena característica presentada en Visual Studio 2010 es 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 construir 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 como verdadero, compilará el código de marcado y obtendrá la detección de errores, que es muy útil. El inconveniente es que cada vez que construyes la solución construye el sitio completo, que puede ser lento e ineficiente, especialmente si no estás editando el sitio. Me encuentro activando y desactivando MvcBuildViews (lo que requiere la descarga de un proyecto). Por otro lado, con sitios web puede elegir si desea construir el sitio como parte de la solución o no. Si elige no hacerlo, la creación de la solución es muy rápida, y siempre puede hacer clic en el nodo del sitio web y seleccionar Crear, si ha realizado cambios.

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

Si usa IIS Express como servidor de desarrollo, en Sitios web puede agregar directorios virtuales. Esta opción no está disponible en las aplicaciones web.

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


153
2018-03-04 14:19



Sitio web = uso cuando el sitio web es creado por diseñadores gráficos y los programadores solo editan una o dos páginas

Aplicación web = uso cuando la aplicación es creada por programadores y los diseñadores gráficos solo editan una o dos páginas / imágenes.

Los sitios web se pueden usar para usar cualquier herramienta HTML sin tener que tener Developer Studio, ya que no es necesario actualizar los archivos del proyecto, etc. Las aplicaciones web son mejores cuando el equipo usa principalmente el desarrollador de estudio y hay un alto contenido de código.

(Algunos errores de codificación se encuentran en las aplicaciones web en tiempo de compilación que no se encuentran en los sitios web hasta el momento de la ejecución).

Advertencia:  Escribí esta respuesta hace muchos años y no he usado Asp.net desde entonces. Espero que las cosas hayan cambiado.


69
2017-07-15 20:15



A menos que tenga una necesidad específica de un proyecto dinámicamente compilado, no use un proyecto de sitio web.

¿Por qué? Porque el proyecto del sitio web lo llevará por la pared cuando intente cambiar o entender su proyecto. Las características de búsqueda de tipado estático (por ejemplo, usos de búsqueda, refactor) en Visual Studio tomarán para siempre en cualquier proyecto de tamaño razonable. Para obtener más información, consulte la pregunta sobre desbordamiento de pila Lento "Buscar todas las referencias" en Visual Studio.

Realmente no puedo entender por qué eliminaron las aplicaciones web en Visual Studio 2005 para el tipo de proyecto de sitio web que causa dolor, agota la cordura y aumenta la productividad.


37
2018-01-24 12:16



Hay un artículo en MSDN que describe las diferencias:

Comparación de proyectos de sitios web y proyectos de aplicaciones web

Por cierto: hay algunas preguntas similares sobre ese tema, por ejemplo:


26
2017-12-29 17:23



Esto puede sonar un poco obvio, pero creo que es algo que no se comprende bien porque Visual Studio 2005 solo se envió originalmente con el sitio web. Si su proyecto trata con un sitio web que es bastante limitado y no tiene mucha separación lógica o física, el sitio web está bien. Sin embargo, si se trata realmente de una aplicación web con diferentes módulos en la que muchos usuarios agregan y actualizan datos, es mejor que lo haga con la aplicación web.

El mayor profesional del modelo de sitio web es que cualquier cosa en el app_code la sección se compila dinámicamente. Puede realizar actualizaciones de archivos C sin una redistribución completa. Sin embargo, esto viene en un gran sacrificio. Muchas cosas pasan bajo las cubiertas que son difíciles de controlar. Los espacios de nombres son difíciles de controlar y el uso específico de DLL sale por la ventana por defecto para cualquier cosa debajo app_code ya que todo se compila dinámicamente

El modelo de aplicación web no tiene compilación dinámica, pero usted obtiene control sobre las cosas que he mencionado.

Si está desarrollando n-tier, le recomiendo el modelo de aplicación web. Si está haciendo un sitio web limitado o una implementación rápida y sucia, el modelo del sitio web puede tener ventajas.

Se puede encontrar un análisis más detallado en:


19
2017-07-07 11:56



Del libro de entrenamiento autodirigido MCTS examen 70-515 libro:

Con la aplicación web (proyecto),

  1. Puede crear una aplicación MVC.
  2. Visual Studio almacena la lista de archivos en un archivo de proyecto (.csproj o .vbproj), en lugar de depender de la estructura de la carpeta.
  3. No puedes mezclar Visual Basic y C #.
  4. No puede editar el código sin detener una sesión de depuración.
  5. Puede establecer dependencias entre múltiples proyectos web.
  6. Debe compilar la aplicación antes de la implementación, lo que le impide probar una página si no se compilará otra página.
  7. No tiene que almacenar el código fuente en el servidor.
  8. Puede controlar el nombre y la versión del ensamblaje.
  9. No puede editar archivos individuales después de la implementación sin volver a compilar.

18
2018-01-03 13:52



Compilation  En primer lugar, hay una diferencia en la compilación. El sitio web no está precompilado en el servidor, se compila en un archivo. Puede ser   una ventaja porque cuando quieres cambiar algo en tu Web   Sitio que puede descargar un archivo específico del servidor, cambiarlo y   cargue este archivo al servidor y todo funcionará bien. En la web   La aplicación no puede hacer esto porque todo está precompilado y   terminas con solo un dll. Cuando cambias algo en un archivo de   su proyecto tiene que volver a compilar todo de nuevo. Entonces si lo harías   gustaría tener la posibilidad de cambiar algunos archivos en el sitio web del servidor es   mejor solución para ti. También permite que muchos desarrolladores trabajen en uno   Sitio web. Por otro lado, si no quieres que tu código sea   disponible en el servidor, debería elegir Aplicación web. Esta   La opción también es mejor para las Pruebas Unitarias debido a que un archivo DLL es   creado después de publicar su sitio web.

Project structureTambién hay una diferencia en la estructura del proyecto. En la aplicación web tiene un archivo de proyecto como el que tenía en la aplicación normal. En el sitio web no hay un archivo de proyecto tradicional; todo lo que tiene es un archivo de solución. Todas las referencias y configuraciones se almacenan en el archivo web.config. @Page directive  Hay un atributo diferente en la directiva @Page para el archivo que contiene la clase asociada a esta página. En la aplicación web, es estándar "CodeBehind", en el sitio web utiliza "CodeFile". Puedes ver esto en los ejemplos a continuación:

Web Application:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs"  
Inherits="WebApplication._Default" %>  

Sitio web:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 

Espacios de nombres: en el ejemplo anterior, puede ver también otra diferencia:   cómo se crean los espacios de nombres En el espacio de nombres de la aplicación web es simplemente un   nombre del proyecto En el sitio web hay ASP de espacio de nombres predeterminado para   páginas compiladas dinámicamente

Editar y continuar: en la aplicación web, la opción Editar y continuar es   disponible (para activarlo, debe ir al menú Herramientas, hacer clic en Opciones   luego encuentra Editar y Continuar en la depuración). Esta característica no funciona   en el sitio web.ASP.NET MVCIf desea desarrollar aplicaciones web usando

ASP.NET MVC (Model View Controller) la mejor opción predeterminada es   Aplicación web. Aunque es posible usar MVC en un sitio web, es   no recomendado.

Resumen: la diferencia más importante entre la aplicación web ASP.NET   y el sitio web es compilación. Entonces, si trabajas en un proyecto más grande donde   algunas personas pueden modificarlo, es mejor usar el sitio web. Pero si eres   haciendo un proyecto más pequeño también puedes usar la Aplicación Web.


12
2018-01-24 12:17



Depende de lo que estás desarrollando.

Un sitio web orientado al contenido tendrá su contenido cambiando con frecuencia y un sitio web es mejor para eso.

Una aplicación tiende a tener sus datos almacenados en una base de datos y sus páginas y códigos cambian raramente. En este caso, es mejor tener una aplicación web donde el despliegue de ensamblajes esté mucho más controlado y tenga mejor soporte para las pruebas unitarias.


12
2018-01-24 12:19



Una de las principales diferencias es que los sitios web se compilan dinámicamente y crean ensamblajes sobre la marcha. Las aplicaciones web se compilan en una gran asamblea.

La distinción entre los dos se ha eliminado en Visual Studio 2008.


10
2018-04-04 12:54



Sí, la aplicación web es mucho mejor que los sitios web, porque las aplicaciones web nos dan libertad:

  1. Tener múltiples proyectos bajo un solo paraguas y establecer un proyecto dependencias entre. P.ej. para PCS podemos tener seguimiento dentro de la web solicitud-

    • Portales web
    • Controlador de notificaciones (para enviar correos electrónicos)
    • Capa empresarial
    • Capa de acceso a datos
    • Administrador de excepciones
    • Utilidad del servidor
    • Servicios WCF (común para todas las plataformas)
    • Artículo de lista
  2. Para ejecutar pruebas unitarias en el código que está en los archivos de clase que están asociado con páginas ASP.NET

  3. Para referirse a las clases, esas son asociado con páginas y controles de usuario de clases independientes
  4. Para crear un ensamblaje único para todo el sitio
  5. Controlar el nombre del ensamblado y el número de versión que se genera para el sitio
  6. Para evitar colocar código fuente en un servidor de producción. (Puedes evitar implementar código fuente en el servidor IIS. En algunos escenarios, como entornos de alojamiento compartido, es posible que le preocupe acceso no autorizado al código fuente en el servidor IIS. (Para una web proyecto del sitio, puede evitar este riesgo compilando previamente en un equipo de desarrollo y despliegue de los ensamblados generados en su lugar del código fuente Sin embargo, en ese caso, pierdes parte del beneficios de actualizaciones sencillas del sitio).
  7. Problema de rendimiento con el sitio web (The la primera solicitud al sitio web puede requerir que el sitio sea compilado, que puede provocar un retraso. Y si el sitio web se ejecuta en un Servidor IIS que tiene poca memoria, incluido todo el sitio en una un solo ensamblaje podría usar más memoria de la que se requeriría para ensambles múltiples)

9
2017-08-15 17:03