La historia de mis desventuras

Palabras más, palabras menos sobre desarrollo de software.

Despliegue de aplicaciones Web con Visual Studio 2010 – MSDeploy

Posted by Jhonny López Ramírez en 21 febrero 2010

Una de las mejoras importantes que incorpora Visual Studio 2010 está relacionada con el despliegue de aplicaciones web. Es importante desde múltiples perspectivas pero yo citaré una que proviene de mi experiencia. Como desarrolladores algunas veces nos abstraemos del trabajo de la configuración e instalación de las aplicaciones que desarrollamos, pero en diversos escenarios ocurre que los roles no están tan definidos y tenemos que abarcar todo el ciclo de desarrollo y distribución de nuestras producciones y es allí donde a veces tenemos dolores de cabeza por horas de errores que casi no comprendemos.

Puesta esta situación vamos a mostrar escuetamente una de las nuevas técnicas de despliegue de aplicaciones que vienen empaquetadas en Visual Studio 2010: MSDeploy. Para ello he creado una pequeña aplicación Dynamic Data que no interesará mucho para los propósitos de esta entrada, salvo como elemento de laboratorio.

Trabajando entonces en nuestra aplicación ASP.NET vamos a configurar un perfil de despliegue para la misma basado en MSDeploy. Para hacerlo vamos a ir al menú Build y seleccionaremos de allí la opción Publish <nombre del proyecto>. O podremos dirigirnos directamente al menú Publish de nuestra barra de herramientas:

1

Seleccionaremos la opción Create Publish Settings – <New> y aparecerá el siguiente cuadro de diálogo:

2

En primer lugar tendremos el nombre del perfil de publicación y adicionalmente las siguientes opciones:

  • Publish method: Podremos escoger entre Web Deploy, FTP, File System y FPSE. Para este caso usaremos Web Deploy.
  • Service URL: Hace referencia a la ruta en la que se publicará el archivo de despliegue de la aplicación en el servidor de aplicaciones. Para este ejemplo he puesto http://localhost/DDEWA/MsDeploy.axd (previa configuración de dicha ruta en mi IIS).
  • Site/application: Se refiere al nombre del sitio en el Internet Information Services. Incluso puede especificarse una estructura de subdirectorios en este parámetro. En mi caso he puesto DDEWA/Test.

Podemos también marcar la aplicación como IIS en el destino y especificar que no se borrarán archivos adicionales en las carpetas publicadas una vez hagamos re-publicación. También, si se ha configurado acceso restringido a las carpetas virtuales de publicación en el servidor podemos especificar las credenciales del usuario autorizado. Usaremos el botón Save de este cuadro de diálogo para almacenar este perfil.

 

3

Si la configuración es exitosa ya podremos hacer uso del botón Publish en nuestro menú de publicación. Se trata de, literalmente, publicación a un clic de distancia:

4

5

Podemos comprobar para este ejemplo la creación de la aplicación en el servidor IIS y su visualización en el navegador:

51

6

Un aspecto importante a tener en cuenta es que en cada re-publicación se enviarán sólo los archivos modificados y no todo el sitio. Una gran ventaja para aplicaciones web enormes.

17 comentarios to “Despliegue de aplicaciones Web con Visual Studio 2010 – MSDeploy”

  1. Nathis said

    hola… de verdad me ha servido bastante la ayuda, mas sin embargo queria consultarle, actuamente tengo una solucion la cual implementa varios proyectos entre ellos un proyecto web, ahorah bien, debo publicar toda la solucion… Mas sin embargo al aplicar los pasos q aqui comenta, solo lo puedo hacer para el proyecto web, y necesito trabajar con todos los proyectos en conjunto, alguna sugerencia??? muchas gracias

    • Hola Nathis. Gracias por tu comentario. Para responder a la pregunta debo hacerte una contrapregunta: los otros proyectos de qué tipo son? Lo pregunto porque .NET y Visual Studio tienen diferentes mecanismos de distribución e implementación para los distintos tipos de aplicaciones que se pueden desarrollar en esta plataforma, por tanto te encontrarás con conceptos como XCopy o ClickOnce. MSDeploy, tal cual como lo describo en este post, está orientado a la publicación de aplicaciones Web. Si me das más pistas al respecto de los otros proyectos puedo sugerirte un esquema de distribución e implementación adecuado. Saludos.

      • Nathis said

        ok, bueno mi solucion consta de cuatro proyectos, uno de ellos es tipo asp.net web application y los otros tres son de tipo windows froms application… todos funcionan en conjunto cuando ejecuto el proyecto web desde visual studio 2010, ahora bien lo que deseo hacer es desplegar mi aplicacion pero como comentaste esto solo se puede para aplicacines web, alguna sugerencia de como ejecutar toda mi aplicacion sin necesidad de abrir visual studio 2010??? una vez mas muchas gracias….

      • Hola Nathis.

        Mira, me preocupa no haber entendido muy bien la arquitectura de tu proyecto dado que me dices que todos tus proyectos funcionan ‘en conjunto’. Es decir, según mi entender, todas estas aplicaciones deben funcionar en el mismo equipo; ¿es así? Si puedes profundizar un poco más en cómo funcionan en conjunto tus aplicaciones, puedo darte una mejor aproximación al problema. Por ahora, te cuento que la publicación de aplicaciones Windows Forms difiere de las aplicaciones web dado que las aplicaciones web se ejecutan en un servidor y basta con que se publiquen en ese servidor una sola vez y los cambios que hagas cada cierto tiempo. En cambio, las aplicaciones Windows corren en el cliente, es decir, cada usuario debe tener instalada la aplicación en su equipo, por tanto lo que debes distribuir para las aplicaciones Windows es su instalador; para hacerlo puedes utilizar un excelente sistema de Deployment de .NET, llamado ClickOnce. Puedes encontrar información acerca de ClickOnce en este enlace: http://msdn.microsoft.com/es-es/library/wh45kb66(v=vs.90).aspx.

        Cualquier inquietud me la dejas saber.

    • Hola Nathis.

      Mira, me preocupa no haber entendido muy bien la arquitectura de tu proyecto dado que me dices que todos tus proyectos funcionan ‘en conjunto’. Es decir, según mi entender, todas estas aplicaciones deben funcionar en el mismo equipo; ¿es así? Si puedes profundizar un poco más en cómo funcionan en conjunto tus aplicaciones, puedo darte una mejor aproximación al problema. Por ahora, te cuento que la publicación de aplicaciones Windows Forms difiere de las aplicaciones web dado que las aplicaciones web se ejecutan en un servidor y basta con que se publiquen en ese servidor una sola vez y los cambios que hagas cada cierto tiempo. En cambio, las aplicaciones Windows corren en el cliente, es decir, cada usuario debe tener instalada la aplicación en su equipo, por tanto lo que debes distribuir para las aplicaciones Windows es su instalador; para hacerlo puedes utilizar un excelente sistema de Deployment de .NET, llamado ClickOnce. Puedes encontrar información acerca de ClickOnce en este enlace: http://msdn.microsoft.com/es-es/library/wh45kb66(v=vs.90).aspx.

      Cualquier inquietud me la dejas saber.

      • Nathis said

        bueno realmente la idea es correr solo la aplicacion web, pero esta aplicacion utiliza clases de los proyectos que comente, por ejemplo uno de ellos se encarga de la base de datos, entondes mi pregunta es, si depliego mi proyecto web, automaticamente la asocia con mi bd, que esta en el otro proyecto? porq cuando hice el despliegue de mi proyecto web, no me deja realizar actividades que necestian acceso a datos, no se si me explique =S gracias

    • Pues mira, Visual Studio es lo suficientemente inteligente como para
      detectar que estás usando referencias de tus otros proyectos e incluirlos en
      la publicación de tu sitio web. Por tanto debes fijarte en la carpeta /bin
      de tu proyecto web publicado y ahí verás si se incluyeron dll’s o el mismo
      ejecutable (archivo .exe con el nombre del proyecto Windows) del proyecto
      que contiene el acceso a datos.

      Con respecto al acceso a datos como tal y que no puedas conectarte, es
      probable que lo que ocurra es que las cadenas de conexión a la base de datos
      se encuentren apuntando a tu base de datos en el ambiente de desarrollo y
      debas cambiarlas para que tu aplicación, una vez publicada en el servidor,
      acceda a la base de datos. ¿Qué error puntual te da en el acceso a datos?
      Quizás pueda ayudarte.

  2. Nathis said

    ah ok bueno en mi carpeta bin tengo los .dll de los proyectos que te comente, pero por ejemplo cuando trato de loguear un usario que ya existe en la bd, no lo permite(no devuelve nada), es como si no hiciera conexion con la bd, en cambio cuando hago la misma operacion desde visual studio 2010, si puedo loguear sin problemas… =(

  3. Vicenç said

    Hola,

    hay alguna manera de hacer lo mismo con un fichero msbuild?

    Muchas gracias.

  4. Alberto said

    Donde podria descargar esta plantilla para visual strudio 2010?

  5. Nicolas said

    Hola Jhonny,

    He visto los pasos y los he aplicado siguendolos al pie de la letra (Y).

    yo tengo una aplicacion web y le hice el publish el problema que tengo ahora es que es como si se perdieran los link (es como si no usara rutas relativas).

    le digo que me lo publique en http://localhost y que use el sitio por defecto .

    cuando inicia me carga bien el sitio. en la siguiente url http://localhost/sat/default.aspx
    cuando intento ingresar en un link la url queda asi http://localhost/contacto.aspx

    como ves en la url se pierde el directorio de “sat”

    Agradezco tu ayuda

  6. Anónimo said

    no le entendi

  7. free games for mac

    Despliegue de aplicaciones Web con Visual Studio 2010 – MSDeploy « La historia de mis desventuras

  8. wii games said

    wii games

    Despliegue de aplicaciones Web con Visual Studio 2010 – MSDeploy « La historia de mis desventuras

  9. Fernando Salazar Pesquera said

    Hola, una duda, yo cree un proyecto Web en arquitectura a 4 capas(Datos,Entidades,Negocio y Vista) mi proyecto funciona sin problema al compilarlo en prueba, ocupo elementos de asp.Net, C#, JavaScript, Ajax, SQL SERVER 2008R2, no tengo ningun problema durante su ejecucion de prueba, pero siempre que intento publicarlo me manda error en un punto específico al momento de intentar conectar la aplicación con la BD, alguien sabe si se debe crear una cadena de conexion o algo adicional al momento de publicar la solución web? Mi visual Studio es el 2015

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: