Português English Espanol

Diferencia entre Web Site y Web Application en ASP.net

martes, 19 de octubre de 2010 2:36 | 

Me han preguntado varias veces cuál es la diferencia entre el WebSite y WebApplication en Visual Studio (en WebSite sólo está presente en las versiones 2005, 2008 y 2010). Si no está familiarizado con Visual Studio 2005/2008/2010 puede determinar que un WebApplication y WebSite son los mismos. Me gustaría contar una historia para explicar con más detalle.

En Visual 2002 y 2003 sólo había WebApplication y nunca habló en WebSite. Con la llegada de Visual Studio 2005 junto con el framework .net 2.0, vino la idea de que Microsoft no será la salvación del mundo de la colaboración de codificación: el WebSite.

¿Adivina lo que sucedió en el lanzamiento de Visual Studio 2005? El VS 2005 para proyectos web, sólo tenía la opción de WebSite y luego comenzaron las quejas de la comunidad asp.net. Las quejas se fortaleció, y Microsoft ha publicado el Service Pack 1 para Visual Studio 2005, la opción de WebApplication versiones muy similares de los años 2002 y 2003 (Recuerde: antes de Service Pack 1 fue lanzado una actualización específica para apoyar WebApplication, pero para los que siguem utilizando el VS 2005 sugiero la actualización a SP1 y demás actualizaciones de Microsoft Update).

WebSite en Visual Studio

Un WebSite es sólo un montón de archivos y subcarpetas de una carpeta en la que las clases son en el mismo namespace (namespace es similar al package en Java).

Algo interesante es que en el WebSite para depurar una aplicación, puede cambiar el código fuente de una clase (.cs o .vb) y continuar con la depuración obedeciendo a los cambios, algo no posible en el WebApplication.

Usted puede crear un WebSite utilizando el menú "File > New > Web Site...". Hay tres opciones sobre la ubicación de los archivos:

  • File System: Le permite elegir una carpeta física.
  • HTTP: Le permite elegir una carpeta virtual.
  • FTP: Le permite elegir una dirección de FTP.

En cualquier caso por encima de ningún archivo de proyecto (.csproj o .vbproj) se crea automáticamente. No tienes una carpeta "bin" (excepto en Publish - la explicación abajo) y no un archivo único ensamblado (DLL).

La mayor diferencia entre WebSite y WebAplication está en "Publish" (Publicación/Deployment). El despliegue realizado el WebApplication es simplemente un archivo DLL para cada proyecto en una solución (.sln). El WebSite tiene 3 opciones de publicación que se describen a continuación:

  1. Codigo fuente abierto: Este tipo de publicación que dejar todo el código fuente en el servidor de alojamiento web, incluyendo clases.
    Para hacer este tipo de publicación, sólo tienes que copiar todos los archivos de el WebSite en el servidor Web o utilizar la opción "Copy WebSite" de la siguiente manera en el icono:
    website1
     
  2. El código fuente de las clases precompilados y las páginas (.aspx) con el código abierto
    Para publicar su sitio en el que sólo las clases deben ser precompilados, se debe dejar a su "Publish WebSite" como:
    website2
     
  3. Todo website precompilado, incluidas las páginas (.aspx).
    Con esta opción, las páginas (ASPX) será con una sola línea de código: "This is a marker file generated by the precompilation tool, and should not be deleted!", es decir, el archivo es sólo para el servidor web sabe que la página existe, ya que todo el contenido será precompilados en la carpeta "bin".
    website3

Un consejo para los que utilizan los tipos de publicación 2 y 3: Utilice "Used fixed naming and single page assemblies". Esta opción establece que los nombres fijos para los archivos DLL. Si no utiliza esta opción, cada publicación va a cambiar los nombres de los archivos DLL y tiene archivos inútiles en la carpeta BIN (si usted elimina todo el sitio antes de publicarlo, no hay diferencia con esta opción).

Web Application en Visual Studio

Para crear un WebApplication: File > New > Project. Seleccionar Web y luego elegir el tipo de aplicación ASP.NET Web Application.

webapplication

Un "Web Application Project" organiza los archivos de proyecto en un archivo llamado .csproj (para C#) o .vbproj (para VB.net). Estos archivos pueden ser de utilidad para aquellos que hacen la publicación automática junto con el Source Safe y la creación de "labels", por ejemplo.

Su único tipo de Build / Publicación genera un único archivo DLL (precompilación) que se encuentra en la carpeta bin del proyecto. Todo lo que se agrega a la WebSite participa en la publicación, en la Web Application puede insertar archivos de documentos, por ejemplo, y al establecer esto de no participar en la publicación. Para ello haga clic en el botón derecho del ratón sobre el archivo deseado en el proyecto y luego en "Properties", cambia la opción "Build Action" para "None".

WebApplication tiene sus clases organizadas por namespaces, puede crear clases en cualquier carpeta del proyecto, a diferencia de lo que sucede en WebSite donde usted puede entrar en las clases sólo en la carpeta App_Code.

Rendimiento

Sabemos que .NET tiene dos fases de la compilación: El primero al hacer el build que llamamos precompilación donde están los archivos precompilados DLL en un lenguaje común (lntermediate Language) para .NET Framework. La segunda es cuando se ejecuta la aplicación, está compilando binarios.

Debido a que la compilación de la aplicación se produce dos veces la velocidad en el WebSite está siendo cuestionado y dependerá del tipo de publicación (como se ve arriba) utilizado. La opción 3 de la publicación en el WebSite se considera el más rápida, pero las pruebas realizadas en el cliente (navegador) el resultado es insignificante en comparación con el WebApplication.

Comparación WebSite X Web Application

   WebApplication WebSite
Archivo del Proyecto No
Carpeta App_Code Sí*
Las clases organizadas por Namespaces No
Opciones de Publicación (Publish) 1 3
Cambio de clases en la Depuración (Debug) No
Cambio en la página (.aspx) en la Depuración (Debug)
Properties de los archivos de proyecto No


*debe crear manualmente con la opción "New Folder" y, si es necesario, cambie la propiedad "Build Action" clases dentro de App_Code a "Compile".

Conclusión

Uso de WebSite o Web Application puede aparecer, según los casos, indiferente, por lo que es necesario analizar su entorno, su manera de gestionar el código fuente, versiones y la generación de Build y publicaciones.

En mi experiencia con ASP.NET, me di cuenta de que el WebSite ya ha causado algunos problemas en la empresa donde trabajo para las referencias, versiones e implementaciones con Source Safe (a veces incluso la falta de conocimiento).

En un Web Application usted tiene mayor control sobre la configuración, sobre todo porque tenemos las propiedades del proyecto y las propiedades de cada archivo en Visual Studio. Debido a estas propiedades es mejor que se puede trabajar con objetos COM+ (por ejemplo, el establecimiento de Copy Local = true en la referencia). También puede generar build en el modo Debug o Release y su código fuente está organizado en namespaces.

Probablemente, si usted utiliza Visual Studio sólo en casa para proyectos personales pueden acabar gustando el WebSite, pero utilizando en proyectos de gran empresa en la generación de Build y publicación son parte clave del proceso, el Web Application termina siendo la mejor opción.


Tags: website, web application, asp.net, visual studio.


Comentarios
 

Añadir su comentario
 
   
 
 
  500 caracteres restantes.
ENVIAR COMENTARIO
carregando

11 Comentarios
BrasilStephan Garcia (Brasil)
jueves, 11 de noviembre de 2010 11:06:00
Parabéns!
United StatesKarl Lass (United States)
lunes, 15 de noviembre de 2010 15:40:42
Really thanks for your useful article!
best regards
IndiaManoj Kumar (India)
miércoles, 24 de noviembre de 2010 7:55:20
Hey thanks for writing this, I always wanted to understand that!
IndiaSantosh Singh (India)
viernes, 04 de marzo de 2011 4:59:04
Hi ,
Your article differentiate better diff between website project and website App project clearly. I understood now.
Thanks!
BrasilRoberto Gullo (Brasil)
martes, 15 de marzo de 2011 17:17:25
Muito bom ! Muito explicativo !
EcuadorHugo Landines (Ecuador)
martes, 19 de abril de 2011 17:21:09
Muchas gracias Mauricio por la explicacion, muy clara.
MexicoAlejandro Rivera (Mexico)
jueves, 30 de junio de 2011 0:46:42
Yo siempre trabajo con WebSites y nunca he tenido problemas, de hecho si hay algo que me gusta mucho de los websites es que cuando lo ejecutas para programar corre mas rapido que un website y esto es debido a que el website primero se compila antes de ser executado, cosa que no ocurre con el website.

Pero bueno como dices, es cuestion de gustos y necesidades.

Saludos...
BrasilAndre (Brasil)
jueves, 07 de julio de 2011 16:52:42
Muito legal bem esclarecedor esta zona toda da microsoft vlw..
BrasilMarcos Júnior Lopes (Brasil)
viernes, 07 de octubre de 2011 10:40:24
Muito bom este poste. Deu para esclarecer as diferenças.
Parabens!!
IndiaDevi (India)
lunes, 10 de octubre de 2011 4:05:53
I like one benefit of using Website instead of Web Application and that is
"You can create two Web Forms in a single WebSite with different language (one in VB and another in C#) but you can't do the same in Web Application."
MexicoMartin Aguirre (Mexico)
martes, 24 de abril de 2012 15:35:52
Gracias por la aportación, es de gran utilidad porque, en particular tuve muchos problemas al publicar un WebSite para una empresa, además denota lentitud, esto no había pasado antes.