827 votos

ASP.NET Sitio Web o ASP.NET Aplicación Web?

Cuando empiezo un nuevo ASP.NET proyecto en Visual Studio puede crear un ASP.NET Aplicación Web y nuevo ASP.NET sitios web en Visual Studio crea un nuevo sitio Web.

¿Cuál es la diferencia entre estos dos ASP.NET Aplicación Web y ASP.NET los Sitios Web? ¿Por qué debería elegir a uno por encima de otro?

Si estoy utilizando Visual Studio 2005 en lugar de Visual Studio 2008 o en Visual Studio 2010, es que la respuesta es diferente?

541voto

Andreas Grech Puntos 39188

Sitio web:

El Sitio Web se compila el proyecto sobre la marcha. Usted termina con mucha más archivos DLL, el cual puede ser un dolor. También da problemas cuando se tiene páginas o controles en uno directorio que necesitan para hacer referencia a las páginas y los controles en otro directorio desde el directorio no puede ser compilado en código todavía. Otro problema puede ser en publicación.

Si Visual Studio no está contada a volver a utilizar los mismos nombres constantemente, nuevos nombres para los archivos DLL generado por las páginas de el tiempo. Que puede llevar a tener algunos cerca de las copias de los archivos DLL que contiene el mismo nombre de la clase, que va a generar un montón de errores. El proyecto de Sitio Web se introdujo con Visual Studio 2005, pero ha resultado no ser extremadamente popular.

Aplicación Web:

La Aplicación Web del Proyecto fue creado como un complemento y que ahora existe como parte de service pack 1 para Visual Studio 2005. La diferencias principales son que el Proyecto de Aplicación Web fue diseñado para trabajos similares a los proyectos Web que se suministra con Visual Studio 2003. Compile la aplicación en un único archivo DLL en la construcción tiempo. Con el fin de actualizar el proyecto debe ser recompilado y el archivo DLL publicado para que se produzcan los cambios.

Otra característica interesante de la Aplicación Web el proyecto es mucho más fácil para excluir archivos de la vista de proyecto. En el Proyecto de Sitio Web, cada archivo que se excluye es el nombre con una excluir palabra clave en el nombre de archivo. En el Proyecto de Aplicación Web, el proyecto sólo comprueba qué archivos incluir/excluir de la vista de proyecto, sin el cambio de nombre de ellos, haciendo las cosas mucho tider.

Referencia: http://www.megasolutions.net/AspNet/difference-between-Web-Site-and-Web-Application-Project-27210.aspx

El artículo ASP.NET 2.0 - Sitio Web de la Aplicación Web de vs proyecto también da razones sobre por qué usar una y no la otra. Aquí es un extracto de la misma:

  • Usted necesita migrar grandes de Visual Studio .NET 2003 aplicaciones para VS 2005? el uso de la Aplicación Web del proyecto.
  • Desea abrir y editar cualquier directorio como un proyecto Web sin crear un archivo de proyecto? uso del Sitio Web proyecto.
  • Usted necesita agregar pre-construcción y post-construcción de pasos durante la compilación? el uso de la Aplicación Web del proyecto.
  • Necesita crear una aplicación Web usando Web varios proyectos? el uso de la Aplicación Web del proyecto.
  • Desea generar una asamblea para cada página? uso del Sitio Web del proyecto.
  • Prefiere la compilación dinámica y trabajo en las páginas, sin la construcción de todo el sitio en cada página de vista? uso de la Web Sitio del proyecto.
  • Prefiere una sola página el código de modelo a modelo de código subyacente? uso del Sitio Web proyecto.

Proyectos de Aplicación Web frente a los Proyectos de Sitio Web (MSDN) explica las diferencias entre el sitio web y los proyectos de aplicación web. También, se analiza la configuración en Visual Studio.

165voto

Max Toro Puntos 13050

El Sitio Web se lo puede implementar un ASP.NET servidor web como IIS. Sólo un montón de archivos y carpetas. No hay nada en un Sitio Web que te ata a Visual Studio (no hay ningún archivo de proyecto). Generación de código y compilación de las páginas web (como .aspx, .ascx, .master) se realiza dinámicamente en tiempo de ejecución, y los cambios en estos archivos son detectados por el marco y automáticamente se vuelve a compilar. Puedes poner el código que desea compartir entre las páginas en el especial de la carpeta App_Code, o usted puede pre-compilar y poner el ensamblado en la carpeta Bin.

Aplicación Web es un especial de proyecto de Visual Studio. La principal diferencia con los Sitios Web es que al construir el proyecto, todos los archivos de código se compila en una sola asamblea, que se coloca en el directorio bin. No implementar los archivos de código en el servidor web. En lugar de tener una carpeta especial para los de código compartido de archivos se pueden poner en cualquier lugar, tal como lo haría en la biblioteca de clase. Porque las Aplicaciones Web contiene archivos que no están destinados a ser implementado, tales como el proyecto y los archivos de código, hay una Publicación de comandos de Visual Studio para la salida de un Sitio Web a una ubicación especificada.

App_Code vs Bin

La implementación de código compartido de archivos es generalmente una mala idea, pero eso no significa que usted tiene que elegir la Aplicación Web. Usted puede tener un Sitio Web que hace referencia a un proyecto de biblioteca de clases que contiene todo el código para el Sitio Web. Las Aplicaciones Web es simplemente una forma cómoda de hacerlo.

CodeBehind

Este tema es específico para los archivos .aspx y .ascx. Este tema es menos relevante en los nuevos marcos de aplicación, tales como ASP.NET MVC y ASP.NET Páginas Web que no utilice los archivos de código subyacente.

Por tener todos los archivos de código compilado en una sola asamblea, incluyendo el código subyacente archivos de las páginas .aspx y .ascx controles, en las Aplicaciones Web que usted tenga que volver a construir para cada pequeño cambio, y que no puede hacer vivir los cambios. Esto puede ser un verdadero dolor durante el desarrollo, ya que tiene que volver edificio para ver los cambios, mientras que con los Sitios Web de los cambios son detectados por el tiempo de ejecución y páginas/controles se vuelve a compilar automáticamente.

Tener el tiempo de ejecución de administrar el código subyacente asambleas es menos trabajo para usted, ya que usted no necesita preocuparse de dar pages/controles de nombres únicos, o la organización de los mismos en diferentes espacios de nombres.

No estoy diciendo que la implementación de los archivos de código siempre es una buena idea (especialmente no en el caso de código compartido de archivos), pero los archivos de código subyacente sólo debe contener código que realiza la interfaz de usuario específica de las tareas, de alambre de eventos de controladores, etc. Su aplicación debe ser en capas, de modo que el código importante siempre terminan en la carpeta Bin. Si ese es el caso, entonces la implementación de archivos de código subyacente no debería ser considerada dañina.

Otra de las limitaciones de las Aplicaciones Web es que usted sólo puede usar el lenguaje del proyecto. En los Sitios Web que pueden tener algunas páginas en C#, algunos en VB, etc. No hay necesidad de soporte técnico de Visual Studio. Esa es la belleza de la acumulación proveedor de extensibilidad.

También, en las Aplicaciones Web, usted no consigue la detección de errores en las páginas/controles como el compilador sólo compila el código subyacente de clases y no el código de marcado (en MVC se puede solucionar este problema mediante la MvcBuildViews opción), que se compila en tiempo de ejecución.

Visual Studio

Debido a que las Aplicaciones Web son proyectos de Visual Studio obtener algunas características no disponibles en los Sitios Web. Por ejemplo, puede utilizar la generación de eventos para realizar una variedad de tareas, por ejemplo. minify y/o combinar ficheros Javascript.

Otra buena característica que se introdujo en Visual Studio 2010 es Web.config de la transformación. Esto no está disponible en los Sitios Web. Ahora trabaja con Sitios Web en VS de 2013.

Creación de una Aplicación Web es más rápido que la construcción de un Sitio Web, especialmente para sitios de gran tamaño. Esto es principalmente debido a que las Aplicaciones Web no se compila el código de marcado. En MVC si establece MvcBuildViews true", que compila el código de marcado y se obtiene de detección de errores, lo cual es muy útil. El lado negativo es que cada vez que se genere la solución se construye un sitio completo, que puede ser lento e ineficiente, especialmente si usted no está de edición del sitio. l encuentro de inflexión MvcBuildViews de encendido y apagado (lo que requiere un proyecto de descarga). Por otro lado, con los Sitios Web que usted puede elegir si usted desea construir el sitio como parte de la solución o no. Si eliges no, entonces la construcción de la solución es muy rápido, y siempre puedes hacer click en el Sitio Web de nodo y seleccione Generar, si has hecho cambios.

En un MVC proyecto de Aplicación Web tiene más comandos y cuadros de diálogo para tareas comunes, como " Add View", " Vaya A Ver', 'Controller', etc. Estos no están disponibles en un MVC Sitio Web.

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

Paquete de NuGet Restaurar no funciona en los Sitios Web, usted tiene que instalar manualmente los paquetes listados en packages.config Paquete de Restaurar ahora trabaja con Sitios Web a partir de NuGet 2.7

73voto

Ian Ringrose Puntos 19115

Sitio Web de = uso cuando el sitio web es creado por los diseñadores gráficos y programadores sólo ediciones de 1 o 2 páginas

Aplicación Web = utiliza cuando la aplicación está creada por los programadores y los diseñadores gráficos editar sólo 1 o dos páginas/imágenes.

Los Sitios Web pueden ser trabajado en el uso de cualquiera de herramientas de HTML, sin necesidad de disponer de developer studio, como los archivos de proyecto no necesita ser actualizado, etc. Las Aplicaciones Web son los mejores cuando el equipo es en su mayoría el uso de developer studio y hay un alto contenido de código.

(Algunos de los errores de codificación se encuentra en las Aplicaciones Web en tiempo de compilación que no se encuentran en los Sitios Web en tiempo de ejecución.)

39voto

ninj Puntos 561

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

¿Por qué? Porque el proyecto de sitio web va a conducir hasta la pared al intentar cambiar o entender su proyecto. El estáticos encontrar funciones (por ej. encontrar usos, refactorizar) en Visual Studio se llevará para siempre en cualquier tamaño razonable del proyecto. Para más información, consulte Stack Overflow pregunta Lento "Buscar Todas las Referencias" en Visual Studio.

Yo realmente no puedo ver por qué se cayó de las aplicaciones web en Visual Studio 2005 para el dolor-inducir, la cordura de drenaje, la productividad carbunco de sitio web tipo de proyecto.

20voto

Daniel Auger Puntos 8459

Esto puede sonar un poco obvio, pero creo que es algo que se entiende mal porque Visual Studio 2005 sólo se entregan con el sitio web de origen. Si su proyecto se trata de un sitio web que es bastante limitada y no tiene mucho de lógica o de la separación física, la página web está muy bien. Sin embargo, si realmente es una aplicación web con diferentes módulos donde muchos usuarios agregar y actualizar los datos, usted está mejor con la aplicación web.

La mayor ventaja de la página web del modelo es que cualquier cosa en la app_code sección se compilan dinámicamente. Usted puede hacer C# archivo de actualizaciones sin volver a implementar. Sin embargo esto tiene un gran sacrificio. Un montón de cosas suceden en virtud de las cubiertas que son de difícil control. Los espacios de nombres son difíciles de controlar y DLL específicos de uso, sale de la ventana por defecto para cualquier cosa bajo app_code ya que todo lo que se compilan dinámicamente.

La web de la aplicación del modelo no tiene la compilación dinámica, pero que obtuviera el control sobre las cosas que he mencionado.

Si usted está haciendo el desarrollo de n niveles, recomiendo la web de la aplicación del modelo. Si usted está haciendo una limitada sitio web o una rápida y sucia de la aplicación, el sitio web de modelo puede tener ventajas.

Un análisis más detallado se puede encontrar en:

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X