Web application project, web site project: por qué y cuál elegir
Si abres Visual Studio, bien versión 2008 o 2010, y lo que quieres es crear una web te encontrarás con dos opciones web application y web site. Pero, ¿por qué hay estos dos tipos de proyectos para web? y ¿Cuál me interesa más dependiendo de lo que quiera hacer?. Cuando aparecieron las primeras versiones de .net 1.0/.net 1.1 y el entorno de desarrollo con cada una de ellas, Visual Studio 2002/2003, en Microsoft siguieron para el tipo de aplicaciones web, webform, el mismo modelo de proyecto que para el desarrollo para Windows llamándolo web project. Este tipo de proyecto organizaba ficheros y referencias del proyecto, produciendo una única .dll de código y recursos al compilar. Pero entonces apareció .net 2.0/Visual Studio 2005 y no todo el mundo estaba contento con sus novedades.Con Visual Studio 2005 las soluciones web se creaban en web site project. La intención era simplificar y aprovechar las posibilidades de partial class, de manera que por un lado un proyecto web incluía todo lo que estaba en el directorio y una aplicación web se compilaba a medida que los usuarios accedían a la página .aspx (aunque podía hacerse una compilación de toda la aplicación). Se agradeció alguna ventaja de este nuevo tipo de proyecto, ya no el diseñador de Visual Studio incluía la declaraciones de controles y eventos en los ficheros codebehind .cs/.vb, pero sobre todo se señalaron dos inconvenientes de este nuevo tipo de proyecto: la dificultad de organizar las referencias y poner bajo control el proyecto bajo herramientas como Team Foundation Server y que aunque podía obtenerse una compilación del proyecto se hacía impractibla su mantenimiento por el sucesivo cambio de nombre en las .dll.
Para el segundo de estos inconvenientes Microsoft publicó Web Deployment Projects, con ello se resolvía el inconveniente de «repetir» la compilación completa, se mantenían los nombres de los ficheros y podía crearse una única .dll a partir de las creadas en la precompilación. Todavía quedaba solucionar la organización de ficheros.
La solución fue el modelo de Web Application Projects, este tipo de proyecto nos devuelve básicamente al modelo de la compilación que había en Visual Studio 2003 con algunas mejoras importantes y el apoyo total de las nuevas características asp. net 2.0 (partial class). Web Application project vuelve al modelo de CodeBehind compilado por Visual Studio en una sola assembly en el directorio bin. Cuando se pasa a producción un proyecto se obtiene una .dll única totalmente compilada, esta es la que hay que actualizar en sucesivas publicaciones del proyecto. Esta posibilidad de organización junto al incluir ficheros cs.designer/vb.designer para el código generado por Visual Studio para definición de controles y eventos, es en lo que se basa el actual tipo de proyecto Web Application.
En las versiones vs 2008/vs 2010, elegir entre uno u otro tipo de proyecto comienza en que tipo de publicación y posterior mantenimiento quieres para tu web. En el caso que quieras más control sobre la compilación, nombre, versión, crear depencias entre proyectos, la elección será Web Application Project, si por el contrario quieres poder actualizar ficheros individualmente sólo con subirlos, no te es necesario una única assembly y en caso de precompilación crees más óptimo tener assemblies independientes, entonces debes elegir el modelo Web Site Project. Organizada en tabla está la comparative web projects con criterios más detallados a la hora de elegir.