Tengo una pequeña aplicación web AngularJS que se ejecuta en quioscos en una red de intranet. Se me ha encomendado la tarea de realizar implementaciones sin tiempo de inactividad y de forma automatizada que pueda controlarse de forma remota con una interfaz web. Como es una aplicación pequeña, no tenemos balanceadores de carga ni configuraciones similares. He mirado dos opciones,
Opción 1: Descargue versiones de la aplicación en una carpeta y cambie la ruta física del directorio virtual a la ruta de la carpeta de una nueva versión; esto se puede lograr usando la biblioteca Microsoft.Web.Administration con el siguiente código:
ServerManager sm = new ServerManager();
Site site = sm.Sites["Default Web Site"];
site.Applications[virtualDirectory].VirtualDirectories["/"].PhysicalPath = newPath;
sm.CommitChanges();
En este enfoque,
- ¿Qué tan rápido se reflejará el cambio?
- ¿Cuáles son las posibilidades de que algunos de los quioscos sigan funcionando con la versión anterior de la aplicación?
- ¿Existe alguna posibilidad de que se produzca un tiempo de inactividad entre el corto período de tiempo que se realiza el cambio?
- ¿Alguna solicitud realizada a IIS en este período devolverá errores?
Opcion 2:Usando la función de reescritura de URL de IIS. Básicamente, agregaré mediante programación nuevas reglas de reescritura al web.config de la aplicación para redirigir a una subcarpeta diferente que será la versión más nueva de la aplicación.
En este enfoque,
- ¿Con qué rapidez se reflejará la regla de reescritura de URL y comenzará la reescritura?
- ¿Cuáles son las posibilidades de que algunos de los quioscos sigan funcionando con la versión anterior de la aplicación?
- ¿Existe alguna posibilidad de que se produzca un tiempo de inactividad entre el período de tiempo en el que se agrega la regla de reescritura a web.config?
- ¿Alguna solicitud realizada a IIS en este período devolverá errores?
- ¿Habrá algún costo de rendimiento por la reescritura de la URL?
Por favor ayúdame. ¿Ambos enfoques no son adecuados para mi tarea? ¿Existen otras alternativas a este requisito?
Respuesta1
MSDeploy debería poder manejar la parte de implementación remota y automatizada. Si no tiene otro servidor u otra forma de enviar el tráfico de la aplicación a un directorio virtual diferente de forma automatizada, no tener tiempo de inactividad no es una solicitud práctica. Es como decir que tengo 1 coche, pero quiero poder seguir conduciéndolo mientras esté en el taller. Si desea conducir un automóvil mientras su automóvil está en el taller, necesitará otro automóvil, temporal o no.