Implementación web de ASP.NET mediante Visual Studio: introducción
Por Tom Dykstra
Descarga del proyecto de inicio
En esta serie de tutoriales se muestra cómo implementar (publicar) una aplicación web ASP.NET en Azure App Service Web Apps o en un proveedor de hospedaje de terceros, mediante Visual Studio 2012 o el SDK de Azure para .NET. La mayoría de los procedimientos son similares para Visual Studio 2013.
Desarrolla una aplicación web para que esté disponible para los usuarios en Internet. Pero los tutoriales de programación web normalmente se detienen justo después de mostrar cómo trabajar en el equipo de desarrollo. Esta serie de tutoriales comienza donde otros se detienen: ha creado una aplicación web, la ha probado y está lista para usarse. A continuación En estos tutoriales se muestra cómo implementar primero en IIS en el equipo de desarrollo local para realizar pruebas y, después, en Azure o en un proveedor de hospedaje de terceros para almacenamiento provisional y producción. La aplicación de ejemplo que implementará es un proyecto de aplicación web que usa Entity Framework, SQL Server y el sistema de pertenencia de ASP.NET. La aplicación de ejemplo usa ASP.NET Web Forms, pero los procedimientos que se muestran también se aplican a ASP.NET MVC y Web API.
En estos tutoriales se supone que sabe cómo trabajar con ASP.NET en Visual Studio. De lo contrario, un buen lugar para empezar es un tutorial básico de ASP.NET Web Forms o un tutorial básico de ASP.NET MVC.
Si tiene preguntas que no están directamente relacionadas con el tutorial, puede publicarlas en el foro de implementación de ASP.NET o en StackOverflow.
Información general
En estos tutoriales se le guía por la implementación de una aplicación web ASP.NET que incluye bases de datos de SQL Server. Primero realizará la implementación en IIS en el equipo de desarrollo local para realizar pruebas y, después, en Web Apps en Azure App Service y Azure SQL Database para almacenamiento provisional y producción. Verá cómo implementar mediante la publicación con un solo clic de Visual Studio y cómo hacerlo con la línea de comandos.
El número de tutoriales podría hacer que el proceso de implementación parezca abrumador. De hecho, los procedimientos básicos son sencillos. Pero en situaciones reales, a menudo debe realizar tareas de implementación adicionales, por ejemplo, establecer permisos de carpeta en el servidor de destino. Se han mostrado algunas de estas tareas adicionales, con la esperanza de que los tutoriales no excluyan información que podría impedir que implemente correctamente una aplicación real.
Los tutoriales están diseñados para ejecutarse en secuencia y cada parte se basa en la parte anterior. Puede omitir partes que no sean relevantes para su situación, pero es posible que tenga que ajustar los procedimientos en tutoriales posteriores.
Destinatarios
Los tutoriales están dirigidos a desarrolladores de ASP.NET que trabajan en entornos donde:
- El entorno de producción es Azure App Service Web Apps o un proveedor de hospedaje de terceros.
- La implementación no se limita a un proceso de integración continua, pero se puede realizar directamente desde Visual Studio.
En estos tutoriales no se describe la implementación desde el control de código fuente mediante un proceso de entrega continua, excepto en un tutorial en el que se muestra cómo realizar la implementación desde la línea de comandos. Para más información sobre la entrega continua, vea los siguientes recursos:
- Integración continua y entrega continua (compilación de aplicaciones en la nube reales con Windows Azure)
- Implementación de una aplicación web en Azure App Service
- Implementación de aplicaciones web en escenarios empresariales (un conjunto anterior de tutoriales escritos para Visual Studio 2010, que todavía tiene información útil para entornos empresariales).
Uso de un proveedor de hospedaje de terceros
En los tutoriales se describe el proceso de configuración de una cuenta de Azure y la implementación de la aplicación en Web Apps en Azure App Service para almacenamiento provisional y producción. Pero puede usar los mismos procedimientos básicos para realizar la implementación en el proveedor de hospedaje de terceros que prefiera. Cuando en los tutoriales se describen procesos únicos de Azure, se explican y avisan de las diferencias puede esperar en un proveedor de hospedaje de terceros.
Implementación de proyectos de aplicación web
La aplicación de ejemplo que se descarga e implementa para estos tutoriales es un proyecto de aplicación web de Visual Studio. Pero si instala la actualización de publicación web más reciente para Visual Studio, puede usar los mismos métodos de implementación y herramientas para proyectos de aplicación web.
Implementación de proyectos MVC de ASP.NET
La aplicación de ejemplo es un proyecto de ASP.NET Web Forms, pero todo lo que aprenderá a hacer también es aplicable a ASP.NET MVC. Un proyecto MVC de Visual Studio es simplemente otra forma de proyecto de aplicación web. La única diferencia es que si va a realizar la implementación en un proveedor de hospedaje que no admite ASP.NET MVC o la versión de destino, debe asegurarse de que ha instalado el paquete NuGet adecuado (MVC 3, MVC 4 o MVC 5) en el proyecto.
Lenguaje de programación
La aplicación de ejemplo usa C# pero para los tutoriales no se necesitan conocimientos de C#, y las técnicas de implementación que se muestran en los tutoriales no son específicas de un lenguaje.
Métodos de implementación de bases de datos
Hay tres maneras de implementar una base de datos de SQL Server junto con la implementación web en Visual Studio:
- Migraciones de Code First en Entity Framework
- El proveedor Web Deploy dbDacFx
- El proveedor Web Deploy dbFullSql
En este tutorial usará los dos primeros métodos. El proveedor Web Deploy dbFullSql es un método heredado que ya no se recomienda, excepto para algunos escenarios específicos, como la migración de SQL Server Compact a SQL Server.
Los métodos que se muestran en este tutorial son para bases de datos de SQL Server, no para SQL Server Compact. Para obtener información sobre cómo implementar una base de datos de SQL Server Compact, vea Implementación web de Visual Studio con SQL Server Compact.
Para los métodos que se muestran en este tutorial es necesario usar el método publish de Web Deploy. Si prefiere otro método de publicación, como FTP, Sistema de archivos o FPSE, vea Implementación de una base de datos por separado de la implementación de aplicaciones web en el mapa de contenido de implementación web para Visual Studio y ASP.NET.
Migraciones de Code First en Entity Framework
En la versión 4.3 de Entity Framework, Microsoft introdujo Migraciones de Code First. Migraciones de Code First automatiza el proceso de realizar cambios incrementales en un modelo de datos y propagar esos cambios a la base de datos. En versiones anteriores de Code First, normalmente se deja que Entity Framework quite y vuelva a crear la base de datos cada vez que cambia el modelo de datos. Esto no es un problema en el desarrollo porque los datos de prueba se vuelven a crear fácilmente, pero en producción normalmente querrá actualizar el esquema de la base de datos sin quitar la base de datos. La característica Migraciones permite a Code First actualizar la base de datos sin quitarla ni volver a crearla. Puede permitir que Code First decida automáticamente cómo realizar los cambios de esquema necesarios, o bien puede escribir código que personalice los cambios. Para obtener una introducción a Migraciones de Code First, vea Migraciones de Code First.
Al implementar un proyecto web, Visual Studio puede automatizar el proceso de implementación de una base de datos administrada por Migraciones de Code First. Al crear el perfil de publicación, active una casilla con la etiqueta Ejecutar Migraciones de Code First (se ejecuta en el inicio de la aplicación). Este valor hace que el proceso de implementación configure automáticamente el archivo Web.config de la aplicación en el servidor de destino para que Code First utilice la clase de inicializador MigrateDatabaseToLatestVersion
.
Visual Studio no hace nada con la base de datos durante el proceso de implementación. Cuando la aplicación implementada accede a la base de datos por primera vez después de la implementación, Code First crea automáticamente la base de datos o actualiza el esquema de la base de datos a la versión más reciente. Si la aplicación implementa un método de inicialización de Migraciones, el método se ejecuta tras la creación de la base de datos o la actualización del esquema.
En este tutorial, usará Migraciones de Code First para implementar la base de datos de la aplicación.
El proveedor Web Deploy dbDacFx
Para una base de datos de SQL Server que no está administrada por Code First de Entity Framework, puede activar una casilla con la etiqueta Actualizar base de datos al configurar el perfil de publicación. Durante la implementación inicial, el proveedor dbDacFx crea tablas y otros objetos de la base de datos de destino para que coincidan con la base de datos de origen. En implementaciones posteriores, el proveedor determina lo que es diferente entre las bases de datos de origen y de destino, y actualiza el esquema de la base de datos de destino para que coincida con la base de datos de origen. De manera predeterminada, el proveedor no realizará ningún cambio que cause pérdida de datos, como cuando se quita una tabla o columna.
Este método no automatiza la implementación de datos en tablas de base de datos, pero puede crear scripts para hacerlo y configurar Visual Studio para ejecutarlos durante la implementación. Otro motivo para ejecutar scripts durante la implementación es realizar cambios de esquema que no se pueden realizar automáticamente porque provocarían la pérdida de datos.
En este tutorial, usará el proveedor dbDacFx para implementar la base de datos de pertenencia de ASP.NET.
Solución de problemas durante este tutorial
Cuando se produce un error durante la implementación o si el sitio implementado no se ejecuta correctamente, los mensajes de error no siempre proporcionan una solución obvia. Para ayudarle con algunos escenarios de problemas comunes, hay disponible una página de referencia de solución de problemas. Si recibe un mensaje de error o algo no funciona mientras realizar los tutoriales, asegúrese de comprobar la página de solución de problemas.
Comentarios bienvenidos
Los comentarios sobre los tutoriales son bienvenidos y, cuando el tutorial se actualiza, se realizarán todos los esfuerzos para tener en cuenta las correcciones o sugerencias de mejoras que se proporcionan en los comentarios del tutorial.
Requisitos previos
Este tutorial se ha escrito para los siguientes productos:
- Windows 8 o Windows 7.
- Visual Studio 2012 o Visual Studio 2012 Express para Web con la actualización más reciente.
- SDK de Azure para Visual Studio 2012
Puede seguir el tutorial con Visual Studio 2010 SP1 o Visual Studio 2013, pero algunas capturas de pantalla y algunas características serán diferentes.
Si usa Visual Studio 2013, instale el SDK de Azure para Visual Studio 2013.
Si usa Visual Studio 2010 SP1, instale el siguiente software:
En función del número de dependencias del SDK que ya tenga en la máquina, la instalación del SDK de Azure puede tardar mucho tiempo, de varios minutos a media hora o más. Necesita el SDK de Azure incluso si planea realizar la publicación en un proveedor de hospedaje de terceros en lugar de en Azure, ya que el SDK incluye las actualizaciones más recientes de las características de publicación web de Visual Studio.
Nota:
Este tutorial se ha escrito con la versión 1.8.1 del SDK de Azure. Desde entonces se han publicado versiones más recientes con características adicionales. Los tutoriales se han actualizado para mencionar estas características y vincular a recursos que tienen más información sobre ellas.
Las instrucciones y capturas de pantalla se basan en Windows 8, pero en los tutoriales se explican las diferencias para Windows 7.
Se necesita otro software para completar el tutorial, pero todavía no es necesario tenerlo instalado. En el tutorial se le guiará por los pasos para instalarlo cuando lo necesite.
Descarga de la aplicación de ejemplo
La aplicación que va a implementar se denomina Contoso University y ya se ha creado automáticamente. Es una versión simplificada de un sitio web universitario, basado de forma flexible en la aplicación Contoso University descrita en los tutoriales de Entity Framework en el sitio de ASP.NET.
Cuando tenga instalados los requisitos previos, descargue la aplicación web Contoso University. El archivo .zip contiene varias versiones del proyecto. Para realizar los pasos del tutorial, comience con el proyecto ubicado en la carpeta C#. Para ver el aspecto del proyecto al final de los tutoriales, abra el proyecto de la carpeta ContosoUniversity-End.
A fin de preparar el proyecto para trabajar con los pasos del tutorial, siga estos pasos:
Guarde los archivos de solución ContosoUniversity de la carpeta C# en una carpeta denominada ContosoUniversity en cualquier carpeta que use para trabajar con proyectos de Visual Studio.
De manera predeterminada, es la carpeta siguiente para Visual Studio 2012:
C:\Users\<username>\Documents\Visual Studio 2012\Projects
(Para las capturas de pantalla de este tutorial, la carpeta del proyecto se encuentra en el directorio raíz en la unidad
C
:).Inicie Visual Studio y abra el proyecto.
En el Explorador de soluciones, haga clic con el botón derecho en la solución y seleccione Habilitar la restauración del paquete NuGet.
Compile la solución.
Si se producen errores de compilación, restaure manualmente los paquetes NuGet:
- En el Explorador de soluciones, haga clic con el botón derecho en la solución y, después, seleccione Administrar paquetes NuGet para la solución.
- En la parte superior del cuadro de diálogo Administrar paquetes NuGet verá Faltan algunos paquetes NuGet en esta solución. Haga clic para restaurar. Haga clic en el botón Restaurar.
- Compile la solución.
Presione CTRL-F5 para ejecutar la aplicación.
La aplicación se abre en la página principal de Contoso University.
(Es posible que haya un tiempo de espera mientras Visual Studio inicia la instancia de LocalDB de SQL Server Express y se podría producir un error de tiempo de espera si ese proceso tarda demasiado. En ese caso, simplemente vuelva a iniciar el proyecto).
Las páginas del sitio web son accesibles desde la barra de menús y permiten realizar las siguientes funciones:
- Mostrar las estadísticas de los alumnos (la página Acerca de).
- Mostrar, editar, eliminar y agregar alumnos.
- Mostrar y editar cursos.
- Mostrar y editar instructores.
- Mostrar y editar departamentos.
A continuación se muestran capturas de pantalla de algunas páginas representativas.
Revisión de las características de la aplicación que afectan a la implementación
Las siguientes características de la aplicación afectan a cómo implementarla o a lo que tiene que hacer para implementarla. Cada una se explica con más detalle en los siguientes tutoriales de la serie.
- Contoso University usa una base de datos de SQL Server para almacenar datos de la aplicación como nombres de alumnos e instructores. La base de datos contiene una combinación de datos de prueba y datos de producción, y cuando se implementa en producción, debe excluir los datos de prueba.
- La aplicación usa el sistema de pertenencia de ASP.NET, que almacena la información de la cuenta de usuario en una base de datos de SQL Server. La aplicación define un usuario administrador que tiene acceso a cierta información restringida. Debe implementar la base de datos de pertenencia sin cuentas de prueba, pero con una cuenta de administrador.
- La aplicación usa una utilidad de informes y registro de errores de terceros. Esta utilidad se proporciona en un ensamblado que se debe implementar con la aplicación.
- La utilidad de registro de errores escribe información de error en archivos XML en una carpeta de archivos. Debe asegurarse de que la cuenta en la que ASP.NET se ejecuta en el sitio implementado tiene permiso de escritura en esta carpeta y debe excluir esta carpeta de la implementación. (De lo contrario, es posible que los datos del registro de errores del entorno de prueba se implementen en producción o que se eliminen los archivos de registro de errores de producción).
- La aplicación incluye algunos valores de configuración que se deben cambiar en el archivo Web.config implementado en función del entorno de destino (prueba, ensayo o producción) y otros valores de configuración que se deben cambiar en función de la configuración de compilación (Depuración o Versión).
- La solución de Visual Studio incluye un proyecto de biblioteca de clases. Solo se debe implementar el ensamblado que genera este proyecto, no el propio proyecto.
Resumen
En este primer tutorial de la serie, ha descargado el proyecto de Visual Studio de ejemplo y ha revisado las características del sitio que afectan a la implementación de la aplicación. En los tutoriales siguientes, preparará la implementación mediante la configuración de algunos de estos elementos para que se controlen automáticamente. De otros se encargará manualmente.