asp.net

asp.net - ¿Qué es exactamente el reciclaje Appdomain



(4)

Echa un vistazo a esto, eso podría explicarlo:

http://weblogs.asp.net/owscott/archive/2006/02/21/ASP.NET-v2.0- 2D00 -AppDomain-recycles_2C00_-more-common-than-before.aspx # 440333

En general. Lo que se denomina "primer acierto" en un sitio web ASP.NET generalmente lleva más tiempo, debido a la compilación y la creación de un Dominio de aplicación.

Siempre que implemente un sitio, asegúrese de usar la función "Publicar sitio web" en Visual Studio, para precompilar su sitio web. Luego se reduce la penalización de "primer golpe". ¡Y recuerde configurar la configuración en Liberar, y no en Depurar!

Estoy tratando de averiguar qué es exactamente el reciclaje de Appdominio? Cuando se solicita una página aspx por primera vez desde una aplicación DotNet, entiendo que se crea un dominio de aplicación para esa aplicación, y los ensamblados necesarios se cargan en ese dominio de aplicación, y se servirá la solicitud. Ahora, si se modifican el archivo web.config o el contenido de la carpeta bin, etc., el dominio de aplicación se "reciclará". Mi pregunta es, al final del proceso de reciclaje, ¿se cargará el appdomain con ensamblajes y estará listo para servir la siguiente solicitud? o se debe solicitar una página para activar los ensamblajes para cargar ?.


Si sus páginas son "actualizables", deben compilarse antes de su uso. Eso significa, sí, a primera solicitud, los ensamblajes se cargan, compilan y preparan para acceder. Cada vez que se cambian estos archivos (¡incluso algunos programas de virus pueden activar esto al cambiar la fecha de modificación de los archivos!), El dominio de aplicación se recicla.

Puede configurar su aplicación web para que no sea actualizable. Todo se compila en DLL, y no verá ningún archivo .ASPX o .CS en el directorio virtual. Hace que su código sea más difícil de actualizar (¿necesita agregar texto adicional en su página web? ¡Recompile el tiempo!), Pero aumenta la disponibilidad de su aplicación web.

Sin embargo, esto aún no evitará que su aplicación web sea reciclada si alguno de los archivos se altera. Por ejemplo, si edita web.config, su dominio de aplicación se reciclará incluso si está compilado.


Reciclar cierra el proceso que aloja el dominio de aplicación. Notará que el PID cambia cuando lo recicla.

Al descargar AppDomin, simplemente se descargan todos los ensamblajes en el AppDomain, que luego se puede reutilizar.

Lo importante es recordar que una vez que el CLR se carga en un proceso, no se puede eliminar. Entonces, si necesita hacer algo tan pronto como se carga el CLR, simplemente descargar el AppDomain no ayudará, porque el CLR no se volverá a cargar.

Además, no es que IIS no sea el único proceso que puede albergar el AppDomain; cualquier proceso puede, y no siempre quiere eliminar todo el proceso solo para descargar sus ensamblajes.


Bueno, creo que el hilo estaba llegando sin problemas a una conclusión final, pero al final, fue de otra manera.

Intentaré responder a la pregunta en función de mi comprensión y aprovechando lo que acabo de leer en otros sitios web.

En primer lugar, yo mismo trato de evitar el término reciclar que no sea para Grupos de aplicaciones, ya que esto puede confundir a alguien. Ahora, al procesar, las piscinas y AppDomain, veo la imagen de la siguiente manera:

Un grupo de aplicaciones es, en resumen, una región de memoria que se mantiene funcionando mediante un proceso llamado W3WP.exe, también conocido como Proceso de trabajo. Reciclar un grupo de aplicaciones significa reducir ese proceso, eliminarlo de la memoria y luego generar un nuevo proceso de trabajo, con un nuevo ID de proceso asignado.

Con respecto a los Dominios de Aplicación, lo veo como subconjuntos de regiones de memoria, dentro de la región mencionada que desempeña el papel de contenedor. En otras palabras, el proceso en memoria, W3WP.exe en este caso, es una región de memoria macro para aplicaciones que almacena regiones de subconjuntos, denominadas Dominios de aplicación. Habiendo dicho eso, un proceso en la memoria puede almacenar diferentes dominios de aplicación, uno para cada aplicación que está asignada para ejecutarse dentro de un grupo de aplicaciones dado.

Cuando se trata de reciclar, como dije inicialmente, es algo que yo mismo reservo solo para Application Pools. Para AppDomains, prefiero usar el término ''reiniciar'', para evitar una idea errónea. En función de esto, reiniciar un AppDomain significa iniciar una aplicación determinada con la configuración recién agregada, como actualizar la configuración existente. Eso ocurre dentro de los límites de esa subregión de memoria, llamada AppDomain, que finalmente se encuentra dentro del proceso asociado con un grupo de aplicaciones respectivo. Esas nuevas configuraciones pueden provenir de archivos como

web.config, machine.config, global.asax, directorio Bin, App_Code,

y puede haber otros.

AppDomain está aislado el uno del otro, eso tiene mucho sentido. Si no es así, si se realizan cambios en un archivo web.config, digamos, de la aplicación 1, reciclaje reembolsado del grupo, se reiniciarán todas las demás aplicaciones asignadas a ese grupo, lo que definitivamente no era deseado por Microsoft ni por nadie más.

Resumiendo mi punto,

  • Proceso (W3WP.exe)
    • AppDomain 1
    • AppDomain 2
    • AppDomain 3
    • AppDomain n

n = el número de aplicaciones asignadas al grupo de aplicaciones administradas por el W3WP.exe dado

  • Los procesos son regiones de memoria aisladas entre sí
  • Los AppDomains son regiones de memoria secundaria aisladas entre sí, dentro del mismo proceso
  • Los cambios en la configuración global de IIS pueden requerir el reciclaje del grupo de aplicaciones (lo que elimina y comienza un nuevo proceso de trabajo, W3WP.exe)
  • La configuración de toda la aplicación cambia las preocupaciones de AppDomains, y es posible que se reinicien después de los cambios en algunos archivos específicos, como los descritos anteriormente.

Para más información, recomiendo:

http://blogs.msdn.com/b/david.wang/archive/2006/03/12/thoughts-on-iis-configuration-changes-and-when-it-takes-effect.aspx

¿Qué causa el reciclaje de un grupo de aplicaciones en IIS?

http://blogs.msdn.com/b/tess/archive/2006/08/02/asp-net-case-study-lost-session-variables-and-appdomain-recycles.aspx

Saludos desde Brasil!