Determinar qué archivos se deben implementar (C#)

por Scott Mitchell

Descargar PDF

Los archivos que deben implementarse desde el entorno de desarrollo en el entorno de producción dependen en parte de si la aplicación ASP.NET se creó mediante el modelo de sitio web o el modelo de aplicación web. Obtenga más información sobre estos dos modelos de proyecto y cómo afecta el modelo de proyecto a la implementación.

Introducción

La implementación de una aplicación web ASP.NET implica copiar los archivos relacionados con ASP.NET del entorno de desarrollo al entorno de producción. Los archivos relacionados con ASP.NET incluyen el código y el marcado de las páginas web ASP.NET y los archivos de soporte técnico del lado del cliente y del servidor. Los archivos de soporte técnico del lado cliente son esos archivos a los que hacen referencia las páginas web y se envían directamente al explorador: imágenes, archivos CSS y archivos JavaScript, por ejemplo. Los archivos de soporte técnico del lado servidor incluyen los que se usan para procesar una solicitud en el lado servidor. Incluyen archivos de configuración, servicios web, archivos de clase, DataSets tipados y archivos LINQ to SQL, entre otros.

En general, todos los archivos de soporte técnico del lado cliente deben copiarse del entorno de desarrollo al entorno de producción, pero los archivos de soporte técnico del lado servidor que se copian dependen de si está compilando explícitamente el código del lado servidor en un ensamblado (un archivo .dll) o si tiene estos ensamblados generados automáticamente. En este tutorial se resaltan los archivos que deben implementarse al compilar explícitamente el código en un ensamblado en lugar de que se produzca automáticamente este paso de compilación.

Compilación explícita frente a compilación automática

Las páginas web ASP.NET se dividen en marcado declarativo y código fuente. La parte de marcado declarativo incluye HTML, controles web y sintaxis de enlace de datos; la parte de código contiene controladores de eventos escritos en Visual Basic o código de C#. Las partes de código y marcado normalmente se separan en archivos diferentes: WebPage.aspx contiene el marcado declarativo mientras WebPage.aspx.cs aloja el código.

Considere una página de ASP.NET denominada Clock que contiene un control Label cuya propiedad Text está establecida en la fecha y hora actuales en que se carga la página. La parte de marcado declarativo (en Clock.aspx) contendrá el marcado de un control web Label (<asp:Label runat="server" id="TimeLabel" />), mientras que la parte de código (en Clock.aspx.cs) tendría un controlador de eventos Page_Load con el siguiente código:

protected void Page_Load(object sender, EventArgs e)
{
    TimeLabel.Text =  "The time at the beep is: " + DateTime.Now.ToString();
}

Para que el motor ASP.NET atienda una solicitud de esta página, primero debe compilarse la parte de código de la página (el archivo WebPage.aspx.cs). Esta compilación puede producirse de forma explícita o automática.

Si la compilación se produce explícitamente, el código fuente de toda la aplicación se compila en uno o varios ensamblados (archivos .dll) ubicados en el directorio Bin de la aplicación. Si la compilación se produce automáticamente, el ensamblado generado automáticamente se coloca, de forma predeterminada, en la carpeta Temporary ASP.NET, que se puede encontrar en la %WINDOWS%\Microsoft.NET\Framework\<versión>, aunque esta ubicación se puede configurar a través del <compilation> elemento en Web.config. Con la compilación explícita debe realizar alguna acción para compilar el código de la aplicación ASP.NET en un ensamblado, y este paso se produce antes de la implementación. Con la compilación automática, el proceso de compilación se produce en el servidor web cuando se accede por primera vez al recurso.

Independientemente del modelo de compilación que use, la parte de marcado de todas las páginas ASP.NET (los archivos WebPage.aspx) debe copiarse en el entorno de producción. Con la compilación explícita, debe copiar los ensamblados en la carpeta Bin, pero no es necesario copiar las partes de código de las páginas ASP.NET (los archivos WebPage.aspx.cs ). Con la compilación automática, debe copiar los archivos de partes de código para que el código esté presente y se pueda compilar automáticamente cuando se visite la página. La parte de marcado de cada página web de ASP.NET incluye una directiva @Page con atributos que indican si el código asociado de la página ya se compiló explícitamente o si necesita compilarse automáticamente. Como resultado, el entorno de producción puede funcionar con cualquier modelo de compilación sin problemas y no es necesario aplicar ninguna configuración especial para indicar que se usa la compilación explícita o automática.

En la tabla 1 se resumen los distintos archivos que se van a implementar al usar la compilación explícita frente a la compilación automática. Tenga en cuenta que, independientemente del modelo de compilación usado, siempre debe implementar los ensamblados en la carpeta Bin, si esa carpeta existe. La carpeta Bin contiene los ensamblados específicos de la aplicación web, que incluyen el código fuente compilado al usar el modelo de compilación explícito. El directorio Bin también contiene ensamblados de otros proyectos y cualquier ensamblado de código abierto o de terceros que pueda usar y estos deben estar en el servidor de producción. Por lo tanto, como regla general, copie la carpeta Bin a producción al implementar. (Si usa el modelo de compilación automática y no usa ningún ensamblado externo, no tendrá un directorio Bin, es correcto).

Modelo de compilación ¿Implementar el archivo de partes de marcado? ¿Implementar el archivo de código fuente? ¿Implementar ensamblados en el directorio Bin?
Compilación explícita No
Compilación automática Sí (si existe)

Tabla 1: los archivos que implemente dependen del modelo de compilación usado.

Un viaje por los recuerdos

El enfoque de compilación que se usa depende, en parte, de cómo se administra la aplicación ASP.NET en Visual Studio. Desde la creación de .NET en el año 2000 ha habido cuatro versiones diferentes de Visual Studio: Visual Studio .NET 2002, Visual Studio .NET 2003, Visual Studio 2005 y Visual Studio 2008. Visual Studio .NET 2002 y 2003 administraron aplicaciones ASP.NET utilizando el modelo de proyecto de aplicación web. Las características clave del modelo de proyecto de aplicación web son:

  • Los archivos que configuran el proyecto se definen en un único archivo de proyecto. Visual Studio no considera que los archivos no definidos en el archivo del proyecto formen parte de la aplicación web.
  • Usa la compilación explícita. Al compilar el proyecto se compilan los archivos de código dentro del proyecto en un único ensamblado que se coloca en la carpeta Bin.

Cuando Microsoft lanzó Visual Studio 2005, quitaron la compatibilidad con el modelo de proyecto de aplicación web y la reemplazaron por el modelo de proyecto de sitio web. El modelo de proyecto de sitio web se diferencia del modelo de proyecto de aplicación web en los siguientes aspectos:

  • En lugar de tener un único archivo de proyecto que escriba los archivos del proyecto, se usa el sistema de archivos. En resumen, los archivos de la carpeta de aplicación web (o subcarpetas) se consideran parte del proyecto.
  • La creación de un proyecto en Visual Studio no crea un ensamblado en el directorio Bin. En su lugar, la compilación de un proyecto de sitio web notifica los errores en tiempo de compilación.
  • Compatibilidad con la compilación automática. Normalmente, los proyectos de sitio web se implementan copiando el marcado y el código fuente en el entorno de producción, aunque el código se puede precompilar (compilación explícita).

Microsoft revivió el modelo de proyecto de aplicación web cuando publicó Visual Studio 2005 Service Pack 1. Sin embargo, Visual Web Developer continuó admitiendo únicamente el modelo de proyecto de sitio web. La buena noticia es que esta limitación se anuló con Visual Web Developer 2008 Service Pack 1. Hoy puede crear aplicaciones ASP.NET en Visual Studio (y Visual Web Developer) mediante el modelo de proyecto de aplicación web o el modelo de proyecto de sitio web. Ambos modelos tienen ventajas y desventajas. Consulte Introducción a proyectos de aplicación web: Comparación de proyectos de sitio web y proyectos de aplicaciones web para obtener una comparación de los dos modelos y para ayudarle a decidir qué modelo de proyecto funciona mejor para su situación.

Exploración de la aplicación web de ejemplo

La descarga de este tutorial incluye una aplicación de ASP.NET de reseñas de libros. El sitio web imita la página web de un aficionado que podría crear para compartir sus reseñas de libros con la comunidad en línea. Esta aplicación web de ASP.NET es muy sencilla y consta de los siguientes recursos:

  • Web.config, el archivo de configuración de la aplicación.

  • Una página maestra (Site.master).

  • Siete páginas de ASP.NET diferentes:

    • ~/Default.aspx: la página principal del sitio.

    • ~/About.aspx: una página "Acerca del sitio".

    • ~/Fiction/Default.aspx: una página en la que se enumeran los libros de ficción que se han reseñado.

      • ~/Fiction/Blaze.aspx: una reseña de la novela Blaze de Richard Bachman.
    • ~/Tech/Default.aspx: una página en la que se enumeran los libros de tecnología que se han reseñado.

      • ~/Tech/CYOW.aspx: una reseña de Create Your Own Website.
      • ~/Tech/TYASP35.aspx: una reseña de Teach Yourself ASP.NET 3.5 in 24 Hours.
  • Tres archivos CSS diferentes en la carpeta Styles.

  • Cuatro archivos de imagen : un logotipo con tecnología de ASP.NET e imágenes de las portadas de los tres libros reseñados, todos ubicados en la carpeta Images.

  • Un archivo Web.sitemap, que define el mapa del sitio y se usa para mostrar menús en las páginas Default.aspx del directorio raíz y carpetas Fiction y Tech.

  • Un archivo de clase denominado BasePage.cs que define una clase base Page. Esta clase amplía la funcionalidad de la clase Page estableciendo automáticamente la propiedad Title en función de la posición de la página en el mapa del sitio. En pocas palabras, cualquier clase de código subyacente de ASP.NET que extienda BasePage (en lugar de System.Web.UI.Page) tendrá su título establecido en un valor en función de su posición en el mapa del sitio. Por ejemplo, al ver la página ~/Tech/CYOW.aspx, el título se establece en "Inicio : Tecnología : Crear su propio sitio web".

En la ilustración 1 se muestra una captura de pantalla del sitio web opiniones de libros cuando se ve a través de un explorador. Aquí verá la página ~/Tech/TYASP35.aspx, que revisa el libro Teach Yourself ASP.NET 3.5 in 24 Hours (Aprender sobre ASP.NET 3.5 en 24 horas). La ruta de navegación que abarca la parte superior de la página y el menú de la columna izquierda se basan en la estructura del mapa de sitio definida en Web.sitemap. La imagen de la esquina superior derecha es una de las imágenes de portada del libro ubicadas en la carpeta Images. La apariencia del sitio web se define a través de reglas de hojas de estilos en cascada escritas por los archivos CSS de la carpeta Estilos, mientras que el diseño de página general se define en la página maestra, Site.master.

The Book Reviews website offers reviews on an assortment of titles

Ilustración 1: el sitio web opiniones de libros ofrece opiniones sobre una variedad de títulos (Haga clic para ver la imagen a tamaño completo)

Esta aplicación no usa una base de datos; cada reseña se implementa como una página web independiente en la aplicación. Este tutorial (y los siguientes) le guían por la implementación de una aplicación web que no tiene una base de datos. Sin embargo, en un tutorial futuro mejoraremos esta aplicación para almacenar reseñas, comentarios de lector y otra información dentro de una base de datos, y exploraremos qué pasos deben realizarse para implementar correctamente una aplicación web controlada por datos.

Nota:

Estos tutoriales se centran en el hospedaje de aplicaciones ASP.NET con un proveedor de host web y no exploran temas auxiliares como el sistema de mapas de sitio de ASP.NET o el uso de una clase de Page base. Para obtener más información sobre estas tecnologías y para obtener más información sobre otros temas tratados en el tutorial, consulte la sección Lectura adicional al final de cada tutorial.

La descarga de este tutorial tiene dos copias de la aplicación web, cada una implementada como un tipo de proyecto de Visual Studio diferente: BookReviewsWAP, un proyecto de aplicación web y BookReviewsWSP, un proyecto de sitio web. Ambos proyectos se crearon con Visual Web Developer 2008 SP1 y usaron ASP.NET 3.5 SP1. Para trabajar con estos proyectos, empiece por descomprimir el contenido en el escritorio. Para abrir el proyecto de aplicación web (BookReviewsWAP), vaya a la carpeta BookReviewsWAP y haga doble clic en el archivo solución, BookReviewsWAP.sln. Para abrir el proyecto de sitio web (BookReviewsWSP), inicie Visual Studio y, a continuación, en el menú Archivo, elija la opción Abrir sitio web, vaya a la carpeta BookReviewsWSP del escritorio y haga clic en Aceptar.

Las dos secciones restantes de este tutorial examinan qué archivos necesitará copiar en el entorno de producción al implementar la aplicación. En los dos tutoriales siguientes: Implementación de su sitio mediante FTP e Implementación de su sitio mediante Visual Studio, se muestran diferentes formas de copiar estos archivos en un proveedor de host web.

Determinación de los archivos que se van a implementar para el proyecto de aplicación web

El modelo de proyecto de aplicación web usa una compilación explícita: el código fuente del proyecto se compila en un único ensamblado cada vez que compila la aplicación. Esta compilación incluye los archivos de código subyacente de las páginas ASP.NET (~/Default.aspx.cs, ~/About.aspx.cs, etc.), así como la clase BasePage.cs. El ensamblado resultante se denomina BookReviewsWAP.dll y se encuentra en el directorio de Bin de la aplicación.

En la ilustración 2 se muestran los archivos que componen el proyecto de aplicación web de opiniones de libros.

The Solution Explorer lists the files that comprise the Web Application Project

Ilustración 2: el Explorador de soluciones enumera los archivos que componen el proyecto de aplicación web

Para implementar una aplicación de ASP.NET desarrollada mediante el modelo de proyecto de aplicación web, empiece por compilar la aplicación para compilar explícitamente el código fuente más reciente en un ensamblado. A continuación, copie los siguientes archivos en el entorno de producción:

  • Los archivos que contienen el marcado declarativo para cada página de ASP.NET, como ~/Default.aspx, ~/About.aspx, etc. Además, copie el marcado declarativo para las páginas maestras y controles de usuario.
  • Ensamblados (archivos.dll ) en la carpeta Bin. No es necesario copiar los archivos de base de datos del programa (.pdb) ni archivos XML que pueda encontrar en el directorio Bin.

No es necesario copiar los archivos de código fuente de las páginas ASP.NET en el entorno de producción ni debe copiar el archivo de clase BasePage.cs.

Nota:

Como se muestra en la ilustración 2, la clase BasePage se implementa como un archivo de clase en el proyecto, colocado en la carpeta denominada HelperClasses. Cuando el proyecto se compila, el código del BasePage.cs archivo se compila junto con las clases de código subyacente de las páginas de ASP.NET en el único ensamblado, BookReviewsWAP.dll. ASP.NET tiene una carpeta especial denominada App_Code que está diseñada para contener archivos de clase para proyectos de sitio web. El código de la carpeta App_Code se compila automáticamente y, por lo tanto, no debe usarse con proyectos de aplicación web. En su lugar, debe colocar los archivos de clase de la aplicación en una carpeta normal denominada HelperClasses, o Classes, o algo similar. Como alternativa, puede colocar archivos de clase en un proyecto de biblioteca de clases independiente.

Además de copiar los archivos de marcado relacionados con ASP.NET y el ensamblado de la carpeta Bin, también debe copiar los archivos de soporte del lado del cliente (las imágenes y los archivos CSS), así como los demás archivos de soporte del lado del servidor y los archivos Web.config y Web.sitemap. Estos archivos de soporte técnico del lado cliente y servidor deben copiarse en el entorno de producción, independientemente de si se usa la compilación explícita o automática.

Determinación de los archivos que se van a implementar para los archivos de proyecto del sitio web

El modelo de proyecto de sitio web admite la compilación automática, una característica que no está disponible al usar el modelo de proyecto de aplicación web. Con la compilación explícita, debe compilar el código fuente del proyecto en un ensamblado y copiar ese ensamblado en el entorno de producción. Por otro lado, con la compilación automática basta con copiar el código fuente en el entorno de producción y el runtime lo compilará cuando sea necesario.

La opción de menú Compilar de Visual Studio está presente en proyectos de aplicación web y proyectos de sitio web. La creación de proyectos de aplicación web compila el código fuente del proyecto en un único ensamblado ubicado en el directorio Bin; compilar un proyecto de sitio web comprueba si hay errores en tiempo de compilación, pero no crea ningún ensamblado. Para implementar una aplicación de ASP.NET desarrollada con el modelo de proyecto de sitio web, solo tiene que copiar los archivos adecuados en el entorno de producción, pero le animaría a compilar primero el proyecto para asegurarse de que no hay errores en tiempo de compilación.

En la ilustración 3 se muestran los archivos que componen el proyecto de sitio web de reseñas de libros.

The Solution Explorer lists the files that comprise the Web Site Project

Ilustración 3: El Explorador de soluciones enumera los archivos que componen el proyecto de sitio web

La implementación de un proyecto de sitio web implica la copia de todos los archivos relacionados con ASP.NET en el entorno de producción, lo que incluye las páginas de marcado para las páginas ASP.NET, las páginas maestras y los controles de usuario, junto con sus archivos de código. También debe copiar los archivos de clase, como BasePage.cs. Tenga en cuenta que el archivo BasePage.cs se encuentra en la carpeta App_Code, que es una carpeta ASP.NET especial que se usa en proyectos de sitio web para archivos de clase. La carpeta especial debe crearse en producción, así como los archivos de clase de la carpeta App_Code del entorno de desarrollo deben copiarse en la carpeta App_Code en producción.

Además de copiar los archivos de marcado y código fuente de ASP.NET, también debe copiar los archivos de soporte técnico del lado cliente, las imágenes y los archivos CSS, así como los otros archivos de soporte técnico del lado servidor, Web.config y Web.sitemap.

Nota:

Los proyectos de sitio web también pueden usar la compilación explícita. Próximamente, un tutorial examinará cómo compilar explícitamente un proyecto de sitio web.

Resumen

La implementación de una aplicación de ASP.NET implica copiar los archivos necesarios desde el entorno de desarrollo al entorno de producción. El conjunto preciso de archivos que se deben sincronizar depende de si el código de la aplicación de ASP.NET se compila explícita o automáticamente. La estrategia de compilación empleada se ve afectada por si Visual Studio está configurado para administrar la aplicación de ASP.NET mediante el modelo de proyecto de aplicación web o el modelo de proyecto de sitio web.

El modelo de proyecto de aplicación web usa la compilación explícita y compila el código del proyecto en un único ensamblado de la carpeta Bin. Al implementar la aplicación, la parte de marcado de las páginas de ASP.NET y el contenido de la carpeta Bin deben insertarse en el entorno de producción; el código fuente de la aplicación, los archivos de código y las clases de código subyacente, por ejemplo, no es necesario copiarlos en el entorno de producción.

El modelo de proyecto de sitio web usa la compilación automática de forma predeterminada, aunque es posible compilar explícitamente un proyecto de sitio web, como veremos en los tutoriales futuros. El despliegue de una aplicación ASP.NET que utiliza la compilación automática requiere que la parte de marcado y el código fuente se copien en el entorno de producción. El código se compila automáticamente en el entorno de producción cuando se solicita por primera vez.

Ahora que hemos examinado qué archivos deben sincronizarse entre los entornos de desarrollo y producción, estamos listos para implementar la aplicación Book Reviews en un proveedor de host web.

¡Feliz programación!

Lecturas adicionales

Para obtener más información sobre los temas tratados en este tutorial, consulte los siguientes recursos: