¿Se pueden extender o parchar los proyectos de aplicación web ASP.NET 3.5 & # 8220; en vuelo & # 8221 ;?

StackOverflow https://stackoverflow.com/questions/282028

Pregunta

Al construir un WAP ASP.NET 3.5, siempre me siento frustrado por la sensación de que no importa cómo me aísle. o "encapsular" bits de lógica o interfaz de usuario Todavía voy a derribar todo el sitio cada vez que necesite actualizar una sola línea de código. Puedo estar malinterpretando cómo ASP.NET maneja los cambios en el "bin" directorio, pero dado el número de "¿por qué se descarga mi AppDomain?" mensajes en los diversos grupos esto todavía parece algo para evitar.

¿Alguien tiene alguna guía y / o marco para modularizar verdaderamente un ASP.NET 3.5 WAP para que la lógica y las páginas puedan agregarse / actualizarse "en vuelo"? Busqué en Google System.AddIn un poco, pero parece estar enfocado en aplicaciones WPF.

¡Gracias por tu ayuda!

James White

¿Fue útil?

Solución

Esto es realmente difícil de lograr ya que .NET no admite la descarga de un tipo que se ha cargado en el dominio de la aplicación.

Una forma de hacerlo es jugar con dominios de aplicación o hacer que WCF lo haga por usted.

Otro estaría implementando el intercambio de código hod de ayende.

Una tercera forma sería poner lógica en la parte compilada dinámicamente (el ASPX). Sin embargo, la aplicación se reiniciará después de una cantidad configurable de cambios.

Otros consejos

Use dos o más servidores. Cuando necesite actualizar, elimine uno, actualícelo, tráigalo, elimine el otro, actualícelo, críelo.

Se necesita un poco de esfuerzo para poder hacer esto, ya que ambas versiones se ejecutan al mismo tiempo, ya que los cambios en la base de datos, etc. pueden ser complicados. Pero el mismo esfuerzo también vale la pena poder revertir los cambios, tal vez alojar solo unos pocos usuarios en un "experimental". servidor, etc. Sin mencionar que la escala horizontal es algo bueno en general :)

Puede adoptar un enfoque diferente aquí, que consiste en hacer que un reinicio de AppDomain no afecte la usabilidad del sitio.

Para hacer eso, mueva la sesión fuera del proceso o deje de confiar por completo en la sesión.

Si hace esto, un reinicio del dominio de aplicación no es un gran problema, y ??está preparando su aplicación para una escalabilidad más fácil en los clústeres si alguna vez llega a ese punto.

Solo un pensamiento adicional, pero apuesto a que eso fue lo que todo "COM +" bit permitido (guardar para hosts compartidos). Romper la lógica en pequeñas fábricas de salchichas apátridas probablemente permitió operaciones de reparación en vuelo sin problemas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top