Debe haber una mejor manera que simplemente "Publicar" en Visual Studio y luego tener que enviar manualmente por FTP los archivos que han cambiado.
La navaja de afeitar de Occam suele ser el enfoque preferido: cuanto más simple, mejor. FTP es fácil con poca o ninguna complicación. Algunas personas usan XCOPY, Filezilla o WSFTP, otras pueden usar la herramienta de implementación web de MS (que aún no conozco), pero en general, hay una mejor manera de implementar aplicaciones web ASP.NET (y otras aplicaciones en general). En mi opinión, si se toma en cuenta la implementación desde el comienzo del desarrollo, la implementación se puede integrar con la aplicación web, lo que lo convierte en una implementación relativamente fácil y sin problemas en el futuro.
Como desarrollador de .NET que ha trabajado en varias compañías que desarrollan aplicaciones web ASP.NET que varían en tamaño, complejidad y número de usuarios (desde varios cientos de usuarios hasta decenas de miles), el "despliegue" de la OMI es a menudo el tema más "fluido". Algunas organizaciones lo llevan demasiado lejos en términos de burocracia, mientras que otras no abordan ningún problema con la implementación. En mi experiencia, los problemas con la implementación tienden a caer en 1 o más de 3 categorías en términos de dificultades / fallas:
La implementación se ignora / olvida en profundidad durante la fase de diseño: la
mayoría de las aplicaciones web tienden a incorporar un servidor web y una base de datos. Más allá del código de la aplicación, tal vez algunos procedimientos almacenados y tablas de bases de datos, la implementación no necesita mucha reflexión. ASP.NET es más que capaz de ayudar en la implementación, pero la mayoría de las veces los desarrolladores se distraen en términos de ejecutar la aplicación real y realizar su tarea, dejando el cómo de la implementación como un problema separado.
La implementación es compleja en múltiples sistemas y personas en juego: la
complejidad es una perra. Desde MSMQ, procedimientos almacenados T-SQL y disparadores, Reporting Services, mensajería SOAP / XML, autenticación AD, SSAS / SSIS, etc. etc., la cantidad de tecnologías en juego aumenta la cantidad de personas involucradas. Lo peor de todo, todos estos componentes diferentes generalmente son administrados por diferentes entidades dentro de una organización. A menos que todos estén sincronizados entre sí, las implementaciones pueden aumentar su complejidad rápidamente y conducir a múltiples puntos de falla.
Pereza, apatía o falta de comunicación y / o gestión:
desde poca o ninguna documentación hasta la falta de comunicación y protocolo coordinados, es fácil arruinar un proceso relativamente simple. La implementación debe ser un procedimiento simple con numerosas comprobaciones en su lugar mientras se documenta lo que se hace, pero a menudo nunca es así. La mayoría de la gente solo quiere que el maldito sitio esté funcionando. En mi experiencia, a las personas (no programadoras) realmente no les importa hasta que algo se vuelve realmente fubar. La responsabilidad rara vez recae en una sola persona para hacer el despliegue, ya que nadie realmente quiere ser la razón del fracaso, por lo que la responsabilidad generalmente se dispersa.
Hay tantas excepciones de archivos complicados que preferiría automatizar el proceso tanto como sea posible, para evitar cargas accidentales. Entonces, ¿cómo lo hace tu equipo?
No conozco ningún proveedor disponible para automatizar la implementación, aunque no me sorprendería si hubiera algunos. Probablemente podría escribir una solución a través de VBScript / WMI o una secuencia de comandos por lotes, pero la realidad es que necesita adaptar una solución para sitios ASP.NET más complejos. Sitios simples que consisten en páginas, conectividad de base de datos y nada más, no necesita hacer tanto, así que escale sus esfuerzos de implementación de acuerdo con la complejidad de la aplicación misma.
Hasta ahora, en mi trabajo actual, la implementación aún se realiza a través de FTP y mueve un montón de archivos. Es feo, fácil de fastidiar y no tiene la sensación de tener una historia precisa. Por supuesto, puedes revisar los registros FTP, nadie se molesta en hacerlo. Nuestras aplicaciones son bastante simples sin mucha necesidad más allá de FTP. La forma en que mi equipo implementa nuestras aplicaciones web es realmente poco o nada útil para usted. En cambio, prefiero aprovechar esta oportunidad para sugerir mejores prácticas.
- Asumir nada. Cuentas de usuario, privilegios R / W / X, ACL, firewalls, tiempo (cuándo implementar y cuánto tiempo tiene que hacerlo) y, si es posible, probar la implementación en todos los entornos antes de la "fecha de lanzamiento" final.
- Antes de que el desarrollo realmente comience, factorice la implementación en el desarrollo. Si es un sitio simple, que así sea. Si hay numerosas partes móviles, incorpórelas y construya un plan en el que todos los componentes (código, base de datos, informes, colas, etc.) estén todos en el mismo plan.
- Coordinar con otras paridades y comunicarse de manera efectiva y eficiente.
- Documente tanta información pertinente si es posible.
- Entorno: un servidor web vs. granja web; 32 bits frente a 64 bits; encontrar una manera de monitorear registros / errores / rotar, etc.
- Encuentre (o cree) herramientas que puedan ayudar en la implementación.
- Si es posible para una implementación programable, elija un paradigma y manténgalo. Por ejemplo, si desea utilizar un servidor de base de datos como el medio principal para llevar a cabo el estado de una aplicación, su implementación, acceso y demás, hágalo en la aplicación y manténgalo. Si prefiere leer archivos XML (como web.config) por todos los medios, simplemente manténgase en un paradigma consistente de implementación de la aplicación. Otro ejemplo: algunas organizaciones dejan web.config como un archivo estático en cada entorno que no debe implementarse en otros entornos. El programa de otros web.config de tal manera que se puede implementar en todos los entornos sin error.
Me doy cuenta de que esta publicación puede ser exagerada para la pregunta que se hizo originalmente. Desafortunadamente, la implementación no es algo simple, ya que las aplicaciones pueden variar en complejidad. Apuesto a que la mayoría de las organizaciones que implementan aplicaciones ASP.NET complejas han desarrollado con el tiempo ciertas estrategias que funcionan (al menos) de manera confiable.