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

848

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?

Robert S.
fuente
66
Una comparación y explicación completa y más reciente (para 4.5) se encuentra aquí en MSDN: Proyectos de aplicaciones web versus proyectos de sitios web en Visual Studio
Gustav

Respuestas:

556

Sitio web:

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

Si a Visual Studio no se le dice que reutilice los mismos nombres constantemente, aparecerá 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, 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 fue diseñado para funcionar de manera similar a los proyectos web que se enviaron con Visual Studio 2003. Lo hará compile la aplicación en un solo archivo DLL en el momento de la compilación. Para actualizar el proyecto, debe volver a compilarse y publicarse el archivo DLL para que se produzcan cambios.

Otra buena característica 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, cada archivo que excluya se renombra con una palabra clave excluida en el nombre del archivo. En el Proyecto de aplicación web, el proyecto solo realiza un seguimiento de qué archivos incluir / excluir de la vista del proyecto sin renombrarlos, lo que hace las cosas mucho más ordenadas.

Referencia

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

  • ¿Necesita migrar grandes aplicaciones de Visual Studio .NET 2003 a VS 2005? use el proyecto de aplicación web.
  • ¿Desea abrir y editar cualquier directorio como 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 proyecto de aplicación web.
  • ¿Necesita crear una aplicación web utilizando múltiples proyectos web? utilizar proyecto de aplicación web.
  • ¿Desea generar un ensamblaje para cada página? utilizar el proyecto del sitio web.
  • ¿Prefieres la compilación dinámica y trabajar en páginas sin construir todo el sitio en cada vista de página? utilizar el proyecto del sitio web.
  • ¿Prefiere el modelo de código de una 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, analiza la configuración que se realizará en Visual Studio.

Andreas Grech
fuente
55
Todavía puede compilar todo su sitio en un archivo dll con el sitio web basado en archivos.
dtc
31
La forma en que tiendo a pensar en ello. Si está programando una aplicación que utiliza HTML como interfaz de usuario, use la aplicación web. Si tiene un sitio web que necesita un poco de Asp.net en algunas de sus páginas, use el Proyecto del sitio web.
Ian Ringrose
35
En realidad, los proyectos de aplicaciones web eran precisamente el tipo de proyecto ASP.NET original. No son "similares" a los proyectos que teníamos en Visual Studio 2003. No se crearon como un complemento. Visual Studio 2005 SP1 simplemente restauró lo que Visual Studio 2005 RTM eliminó por error.
John Saunders
1
Puede usar la salida de WebApplication en un proyecto de WebDeployment. No puede usar la salida de WebSite en un proyecto de WebDeployment. Si desea crear un proyecto de implementación, manténgase en WebApplication. Pero para el desarrollo, WebSite es más conveniente. Sin embargo, la conversión no siempre es sin problemas, así que comience con WebApplication de inmediato.
Stefan Steiger
8
@xarzu: los "proyectos" del sitio web no tienen archivos .csproj o .vbproj. Realmente no son proyectos, son solo carpetas llenas de archivos.
John Saunders
171

El 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 a Visual Studio (no hay 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 poner 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.

Aplicación web es un proyecto especial de Visual Studio. La principal diferencia con los sitios web es que cuando construye el proyecto, todos los archivos de código se compilan en un solo ensamblaje, que se coloca en el directorio bin. No despliega 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. Debido a que las aplicaciones web contienen archivos que no están destinados a ser implementados, como archivos de proyecto y código, hay un comando Publicar en Visual Studio para enviar un sitio web a una ubicación específica.

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 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 los nuevos marcos de aplicaciones, como ASP.NET MVC y páginas web ASP.NET que no utilizan archivos de código subyacente.

Al compilar todos los archivos de código en un solo ensamblaje, incluidos los archivos de código subyacente de las páginas .aspx y los controles .ascx, en las aplicaciones web debe volver a compilar para cada pequeño cambio, y no puede realizar cambios en vivo. Esto puede ser un verdadero dolor durante el desarrollo, ya que debe seguir reconstruyéndolo 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 el código detrás de los ensamblados es menos trabajo para usted, ya que no necesita preocuparse por dar nombres únicos a las páginas / controles u organizarlos en diferentes espacios de nombres.

No digo que la implementación de 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 debe considerarse dañina.

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 es necesario un soporte especial de Visual Studio. Esa es la belleza de la extensibilidad del proveedor de compilación.

Además, en las aplicaciones web no obtiene detección de errores en las páginas / controles, ya que el compilador solo compila su código detrás de las clases 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, 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, por ejemplo, minificar y / o combinar archivos Javascript.

Otra buena característica 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. El inconveniente es que cada vez que crea la solución, construye el sitio completo, lo que puede ser lento e ineficiente, especialmente si no está editando el sitio. Me encuentro activando y desactivando MvcBuildViews (que requiere la descarga de un proyecto). Por otro lado, con los Sitios web puede elegir si desea construir el sitio como parte de la solución o no. Si elige no hacerlo, la construcción de la solución es muy rápida, y siempre puede hacer clic en el nodo Sitio web y seleccionar Construir, 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 usa IIS Express como servidor de desarrollo, en los sitios web puede agregar directorios virtuales. Esta opción no está disponible en aplicaciones web.

NuGet Package Restore no funciona en sitios web, debe instalar manualmente los paquetes enumerados en packages.configRestaurar paquete ahora funciona con sitios web que comienzan NuGet 2.7

Max Toro
fuente
43
Debido a que los programadores escriben la aplicación, la aplicación se construye. El equipo de prueba prueba la aplicación en el sistema de prueba. Luego el cliente instala las aplicaciones. ¡Lo ÚLTIMO que crees que quieres es que alguien haga cambios en vivo!
Ian Ringrose
12
Para mí, tener la opción es la mejor, en los sitios web que siempre puede heredar de una clase base precompilada si lo desea. Hay muchos lenguajes / marcos (por ejemplo, PHP) donde las personas están acostumbradas a la idea de implementar el código fuente. Eso no significa que esas no sean aplicaciones 'serias'.
Max Toro
66
"En realidad, no gestionas esas DLL, [...] ni siquiera tienes que saber que existen. No es un problema". - Hasta que el marco se confunda, no limpie las versiones anteriores correctamente y comience a generar excepciones de compilación con nombres en conflicto en todo el sitio ... Puede agregar la detección de errores del marcado mediante el uso de un proyecto WebDeployment. Tampoco estoy seguro de su último punto "con sitios web en los que puede usar IIS como servidor", también puede hacerlo con una aplicación web, y tengo proyectos como este donde el proyecto forma parte de una aplicación web más grande.
Zhaph - Ben Duguid
3
La implementación de un sitio web no siempre tiene que ser en un servidor en vivo. Las iteraciones de desarrollo deberían, en un mundo perfecto, probarse en un espejo del entorno en vivo. Con la incapacidad de las aplicaciones web para realizar cambios rápidos de código en un sitio que se ejecuta en un servidor de desarrollo IIS (es decir, que no se ejecuta utilizando la instancia local de VS), es muy difícil probar soluciones pequeñas y rápidas. Esto sucede todo el tiempo en sistemas donde no puede replicar las mismas condiciones en su máquina local.
NikoRoberts 01 de
44
"Esto puede ser un verdadero dolor durante el desarrollo, ya que debes seguir reconstruyéndolo para ver los cambios" ... ten en cuenta que tendría que ser un proyecto MASIVO o una computadora REALMENTE ANTIGUA para que sea difícil de hacer Una reconstrucción en estos días.
Darren
75

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

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

Los sitios web se pueden trabajar con cualquier herramienta HTML sin tener que tener un estudio de desarrollo, ya que los archivos de proyecto no necesitan actualizarse, etc. Las aplicaciones web son mejores cuando el equipo usa principalmente el estudio de desarrollador 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 tiempo de ejecución).

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

Ian Ringrose
fuente
40

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

¿Por qué? Porque el proyecto del sitio web lo llevará a la pared cuando intente cambiar o comprender su proyecto. Las características de búsqueda de escritura estática (p. Ej., Usos de búsqueda, refactorización) en Visual Studio se llevarán para siempre en cualquier proyecto de tamaño razonable. Para obtener más información, consulte la pregunta de desbordamiento de pila lenta "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 de carbuncle que produce dolor, sanidad y productividad.

ninj
fuente
30

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:

M4N
fuente
Supongo que la respuesta sobre si debo usar el archivo de código o el código detrás en el marcado desaparece con la respuesta que fue eliminada por SO ...
frenchone
Entonces, para aquellos que se preguntan: aplicación web = solución bien estructurada = código subyacente en marcado VS sitio web = grupo de archivos = archivo de código en marcado
frenchone
22

Esto puede sonar un poco obvio, pero creo que es algo que no se entiende porque Visual Studio 2005 solo se envió con el sitio web originalmente. 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 es realmente una aplicación web con diferentes módulos donde muchos usuarios agregan y actualizan datos, es mejor que la aplicación web.

El mayor profesional del modelo de sitio web es que cualquier cosa en la app_codesección se compila dinámicamente. Puede realizar actualizaciones de archivos C # sin una nueva implementación completa. Sin embargo, esto viene con un gran sacrificio. Suceden muchas cosas debajo de las cubiertas que son difíciles de controlar. Los espacios de nombres son difíciles de controlar y el uso específico de DLL desaparece de forma predeterminada para cualquier cosa debajo, app_codeya que todo se compila dinámicamente.

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

Si está realizando un desarrollo de n niveles, 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:

Daniel Auger
fuente
3
> El mayor profesional del modelo de sitio web es que cualquier cosa en la sección app_code se compila dinámicamente. Esto también tiene un gran inconveniente. Mi sitio web está alojado en webhost4life, que son baratos pero con muchas funciones. La desventaja es que reciclan el proceso de trabajo con mucha frecuencia (¿15 minutos?), Lo que significa que el siguiente usuario tiene una salida de la primera página muy lenta a medida que se vuelve a compilar la aplicación.
Rob Nicholson
19

Del libro del examen 70-515 del kit de capacitación personal MCTS:

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 carpetas.
  3. No puede mezclar Visual Basic y C #.
  4. No puede editar 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.
YuMei
fuente
# 4 está mal. "Editar y continuar" se puede habilitar, con algunas restricciones. Tal vez esto fue cierto en 2011. # 9 debería decir "no puede editar archivos de código fuente individuales sin volver a compilar". Puede editar .aspx, .js, .css, etc. sin volver a compilar.
John Saunders
# 4 tiene otro ángulo. Si abre un sitio web usando Archivo> Abrir> Sitio web y navega a la carpeta del sistema de archivos para el sitio web, en lugar de abrir el sitio seleccionando la solución desde la ventana de inicio, puede editar los módulos de clase y el código subyacente (al menos en vb.net ) sin detener la depuración. No verá los cambios hasta que reconstruya, sin embargo, a menudo es útil poder ver el comportamiento de la página mientras modifica el código. La desventaja es que pierde todo lo que entra en la solución: puntos de interrupción, archivos abiertos, marcadores, etc. Y a veces tiene que eliminar los archivos sln / sou.
caminante
16

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ódigo cambian raramente. En este caso, es mejor tener una aplicación web donde la implementación de ensamblados esté mucho más controlada y tenga un mejor soporte para las pruebas unitarias.

AnthonyWJones
fuente
16

Compilation En primer lugar, hay una diferencia en la compilación. El sitio web no está precompilado en el servidor, se compila en el archivo. Puede ser una ventaja porque cuando desea cambiar algo en su sitio web, simplemente puede descargar un archivo específico del servidor, cambiarlo y cargar este archivo nuevamente en el servidor y todo funcionará bien. En la aplicación web no puedes hacer esto porque todo está precompilado y terminas con solo un dll. Cuando cambia algo en un archivo de su proyecto, debe volver a compilar todo de nuevo. Entonces, si desea tener la posibilidad de cambiar algunos archivos en el sitio web del servidor, es la mejor solución para usted. También permite que muchos desarrolladores trabajen en un sitio web. Por otro lado, si no desea que su código esté disponible en el servidor, debe elegir la aplicación web.

Project structure También hay una diferencia en la estructura del proyecto. En la aplicación web tiene un archivo de proyecto tal como lo 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 con esta página. En la aplicación web es estándar "CodeBehind", en el sitio web utiliza "CodeFile". Puede ver esto en los ejemplos a continuación:

Aplicación web:

<%@ 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, también puede ver otra diferencia: cómo se crean los espacios de nombres. En la aplicación web, el espacio de nombres es simplemente un nombre del proyecto. En el sitio web hay un 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 está disponible (para activarla, debe ir al menú Herramientas, hacer clic en Opciones y luego buscar Editar y continuar en la depuración). Esta característica no funciona en el sitio web.ASP.NET MVCI si desea desarrollar aplicaciones web utilizando

ASP.NET MVC (Model View Controller), la mejor opción predeterminada es la aplicación web. Aunque es posible usar MVC en el sitio web, no se recomienda.

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

Himanshu
fuente
En un proyecto grande donde más de una persona lo está cambiando, usted usa el control de fuente, por lo que no es una razón para usar "proyectos" del sitio web.
John Saunders
+1 para distinción en codebehind (webapp) vs codefile (sitio web) en la directiva de página. Esta es una precisión que falta en la respuesta seleccionada.
frenchone
11

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 mismo paraguas y establecer dependencias de proyectos entre ellos. Por ejemplo, para PCS podemos tener lo siguiente dentro de la aplicación web:

    • Portales web
    • Controlador de notificaciones (para enviar correos electrónicos)
    • Capa empresarial
    • Capa de acceso a datos
    • Gerente de excepciones
    • Utilidad del servidor
    • Servicios WCF (comunes para todas las plataformas)
    • Elemento de la lista
  2. Para ejecutar pruebas unitarias en el código que está en los archivos de clase asociados con las páginas ASP.NET

  3. Para referirse a las clases que están asociadas con páginas y controles de usuario de clases independientes
  4. Para crear un solo ensamblaje para todo el sitio
  5. Control sobre el nombre del ensamblado y el número de versión que se genera para el sitio
  6. Para evitar poner el código fuente en un servidor de producción. (Puede evitar la implementación del código fuente en el servidor IIS. En algunos escenarios, como los entornos de alojamiento compartido, es posible 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 si precompilar en una computadora de desarrollo e implementar los ensamblados generados en lugar del código fuente. Sin embargo, en ese caso, perderá algunos de los beneficios de las actualizaciones fáciles del sitio).
  7. Problema de rendimiento con el sitio web (la primera solicitud al sitio web puede requerir la compilación del sitio, lo que puede ocasionar una demora. Y si el sitio web se ejecuta en un servidor IIS con poca memoria, incluido todo el sitio en un un solo ensamblaje puede usar más memoria de la que se requeriría para ensambles múltiples).
Nilesh Rathod
fuente
11

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

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

Sam Cogan
fuente
44
"La distinción entre los 2 se eliminó en vs2008" - no estoy seguro de lo que quiere decir allí - todavía son distintos tipos de proyectos en VS2008, se comportan de manera diferente y se crean a través de diferentes opciones de menú; sin embargo, al menos ambos están disponibles por defecto en VS2008.
Zhaph - Ben Duguid
9

Las aplicaciones generalmente se compilan antes de la implementación, ya que el sitio web utiliza el directorio app_code. Cuando algo cambia en la carpeta del código de la aplicación, el servidor volverá a compilar el código. Esto significa que puede agregar / cambiar código con un sitio web sobre la marcha.

La ventaja de una aplicación es que no hay que volver a compilar y, por lo tanto, los tiempos iniciales de inicio serán más rápidos.

Daisy Moon
fuente
Eso es parcialmente cierto, puede precompilar páginas en el sitio web si lo desea
Amr H. Abd Elmajeed
8

Le recomiendo que vea el video Proyectos de aplicaciones web y proyectos de implementación web en el sitio web ASP.NET que explica la diferencia con gran detalle, fue bastante útil para mí.

Por cierto, no se confunda con el título, una gran parte del video explica la diferencia entre proyectos de sitios web y proyectos de aplicaciones web y por qué Microsoft reintrodujo proyectos de aplicaciones web en Visual Studio 2005 (como probablemente ya sepa, originalmente enviado solo con proyectos de sitios web, luego se agregaron proyectos de aplicaciones web en SP1). Un gran video que recomiendo para cualquiera que quiera saber la diferencia.

Waleed Eissa
fuente
El video ahora está en: asp.net/web-forms/videos/vs-2005/…
Bob Reynolds
7

Un "sitio web" tiene su código en un directorio especial de App_Code y está compilado en varias DLL (ensamblados) en tiempo de ejecución. Una "aplicación web" está precompilada en una sola DLL.

md adilahmed
fuente
5

Sitio web y sitio web de Project >> son dos métodos diferentes para crear aplicaciones ASP.NET utilizando Visual Studio. Uno no tiene proyectos y otro es el entorno del proyecto. Las diferencias son como

  1. El archivo de solución se almacena en el mismo directorio que el directorio raíz en el entorno del proyecto.
  2. Necesita eliminar la solución y los archivos del proyecto antes de implementarlos en el entorno del proyecto.
  3. El directorio raíz completo se implementa en un entorno sin proyectos.

No hay mucha diferencia básica en el uso de cualquiera de los dos enfoques. Pero si está creando un sitio web que llevará más tiempo, opte por el entorno del proyecto.

Chaturvedi Dewashish
fuente
1
El archivo de solución no necesita estar en la misma carpeta. Además, el mecanismo de publicación estándar elimina los artefactos que no deberían estar en el sitio de destino, por ejemplo, los archivos de código subyacente no se implementan.
John Saunders
5

Modelo de proyecto de aplicación web

  • Proporciona la misma semántica de proyectos web que los proyectos web de Visual Studio .NET. Tiene un archivo de proyecto (estructura basada en archivos de proyecto). Modelo de compilación: todo el código del proyecto se compila en un solo ensamblaje. Admite tanto IIS como el servidor de desarrollo ASP.NET incorporado. Admite todas las características de Visual Studio 2005 (refactorización, genéricos, etc.) y de ASP.NET (páginas maestras, membresía e inicio de sesión, navegación del sitio, temas, etc.). El uso de Extensiones de servidor de FrontPage (FPSE) ya no es un requisito.

Modelo de proyecto del sitio web

  • Sin archivo de proyecto (basado en el sistema de archivos).
  • Nuevo modelo de compilación.
  • Compilación dinámica y trabajo en páginas sin construir todo el sitio en cada vista de página.
  • Admite tanto IIS como el servidor de desarrollo ASP.NET incorporado.
  • Cada página tiene su propio ensamblaje.
  • Modelo de código diferente.
usuario1855471
fuente
5

Siempre depende del requisito de su cliente. ASP.NET solo incluye características flexibles que el usuario necesita para la seguridad y el fácil mantenimiento de su aplicación.

Puede pensar en una aplicación web como un archivo binario que se ejecuta dentro del marco ASP.NET. Y los sitios web como una página web estática que puede revisar e implementar fácilmente el código fuente.

Pero las ventajas y desventajas de estas dos tecnologías ASP.NET son lo que es bueno.

jovenb
fuente
4

Sitios web: no se creará ningún archivo de solución. Si queremos crear sitios web no necesitamos estudio visual.

Aplicación web: se creará un archivo de solución. Si queremos crear una aplicación web deberíamos necesitar el estudio visual. Creará un solo .dllarchivo en la carpeta bin.

Nagaraj P
fuente
2
-1 En realidad, tiene un archivo de solución si crea un proyecto de sitio web a través de Visual Studio. No tienes un archivo de proyecto.
Darren
1 Sin duda, puede crear un archivo de solución, pero este archivo está casi vacía por lo que es sólo una molestia (VS pregunta dónde guardar el archivo de salida) y no es algo muy útil
frenchone
3

En Proyectos de aplicaciones web, Visual Studio necesita archivos .designer adicionales para páginas y controles de usuario. Los proyectos del sitio web no requieren esta sobrecarga. El marcado en sí mismo se interpreta como el diseño.

Goodmedalist
fuente
3

Sitio web: genera la carpeta app_code automáticamente y si la publica en el servidor y luego si realiza algunos cambios en un archivo o página en particular, no tiene que compilar todos los archivos.

Aplicación web Genera automáticamente un archivo de soluciones que el sitio web no genera y, si cambia en un archivo, debe compilar el proyecto completo para reflejar sus cambios.

Mukesh Kumar
fuente
"Compilar el proyecto completo" no significa compilar todos los archivos del proyecto. Los archivos de código fuente que no han cambiado no se volverán a compilar.
John Saunders
3

En una aplicación web, puede crear las capas de la funcionalidad de su proyecto y puede crear interdependencias entre ellas dividiéndolas en muchos proyectos, pero nunca puede hacerlo en un sitio web.

Imran Chaudhary
fuente
3

Definitivamente aplicación web, archivo DLL único y fácil de mantener. Pero un sitio web es más flexible; puede editar el archivo aspx sobre la marcha.

gadasadox
fuente
También puede editar el archivo aspx en un proyecto de aplicación web.
John Saunders
3

Las aplicaciones web requieren más memoria, presumiblemente porque no tiene más remedio que compilar en un solo ensamblaje. Acabo de convertir un sitio heredado grande en una aplicación web y tengo problemas con la falta de memoria, tanto en tiempo de compilación con el siguiente mensaje de error:

Unexpected error writing metadata to file '' -- 
Not enough storage is available to complete this operation. 

error, y en tiempo de ejecución con este mensaje de error como se muestra a continuación:

Exception information: 
    Exception type: HttpException 
    Exception message: Exception of type 'System.OutOfMemoryException' was thrown.
   at System.Web.Compilation.BuildManager.ReportTopLevelCompilationException()

Mi recomendación para convertir sitios más grandes en hardware heredado con limitaciones de memoria es elegir la opción para volver al modelo de sitio web. Incluso después de un problema de éxito inicial podría aparecer más tarde.

cdonner
fuente
Eso no parece ser una excepción en tiempo de compilación.
John Saunders
1

Aquí la aplicación de soporte web es un ejemplo de sitio web.

Aquí la aplicación de soporte web es un ejemplo de sitio web. El sitio web y la aplicación web pueden ser dinámicos / estáticos, depende de los requisitos, aquí hay un ejemplo para comprender el funcionamiento del sitio web y la aplicación web.


fuente
Esto no se aplica en asp.net. La distinción entre sitio web y aplicación web (en terminología asp.net) trata más sobre cómo se organizan los archivos (como una solución bien organizada o como un conjunto de archivos) y compilados ("JIT" frente a estático). En ambos casos, el "programa" es principalmente del lado del servidor.
frenchone
0

Para resumir algunas de las respuestas anteriores:

Flexibilidad , ¿puedes hacer cambios en vivo a una página web?

Sitio web : posible. Pro: beneficios a corto plazo. Con: riesgo a largo plazo del caos del proyecto.

Aplicación web : Con: no es posible. Edite una página, archive los cambios en el control de origen, luego construya e implemente todo el sitio. Pro: mantener un proyecto de calidad.

Problemas de desarrollo

Sitio web : Estructura de proyecto simple sin un archivo .csproj. Dos páginas .aspx pueden tener el mismo nombre de clase sin conflictos. Nombre de directorio de proyecto aleatorio que conduce a errores de compilación como por qué .net framework entra en conflicto con su propio archivo generado y por qué .net framework entra en conflicto con su propio archivo generado . Pro: simple (simplista). Con: errático.

Aplicación web : estructura de proyecto similar al proyecto WebForms, con un archivo .csproj. Los nombres de clase de las páginas asp deben ser únicos. Pro: simple (inteligente). Con: ninguno, porque una aplicación web sigue siendo simple.

Roland
fuente