2011-06-13 12 views
7

Estoy intentando usar el motor de vista Razor como un motor de plantillas general respaldado por una base de datos.
http://razorengine.codeplex.com/ El problema es que para cada compilación de plantillas se crea y carga un nuevo conjunto dinámico. Como no hay forma de descargar un ensamblado desde el dominio de aplicación actual y no hay forma de usar un dominio de aplicación separado para el sistema de plantillas (uso de tipos anónimos), estos ensamblajes se seguirán acumulando hasta que se destruya el dominio de aplicación. Las plantillas mismas cambiarán de forma regular y, como tal, darán como resultado más recompilaciones.Demasiados conjuntos dinámicos

La pregunta es si estos ensambles dinámicos (potencialmente miles) dañarán el rendimiento del dominio de aplicación? ¿O alternativamente hay una mejor manera de hacer esto?

Respuesta

1

En general, tener muchos ensambles pequeños cargados en AppDomain no debería ser algo de lo que preocuparse demasiado. La única declaración general que alguien podría hacer sobre esto es medir el rendimiento real de la aplicación en los escenarios relevantes y luego ver si es importante.

ASP.NET tiene una gestión automática del ciclo de vida de las aplicaciones que reciclará el dominio de la aplicación después de ciertos eventos. Por ejemplo, si hay demasiadas recompilaciones en la aplicación, ASP.NET reiniciará automáticamente la aplicación. Esto significa que todos los ensamblajes previamente cargados se borrarán y usted comenzará desde cero.

Ver MSDN para obtener más información: http://msdn.microsoft.com/en-us/library/s10awwz0.aspx

numRecompilesBeforeAppRestart

atributo opcional Int32.

Especifica el número de recompilaciones dinámicas de recursos que pueden ocurrir antes de que la aplicación se reinicie. Este atributo es compatible a nivel global y de aplicación, pero no a nivel de directorio.

Nota

ASP.NET aumenta la propiedad numRecompilesBeforeAppRestart cada vez que se invalida una asamblea y no puede ser borrado.

El valor por defecto es 15.

+0

Es bueno saber que hay por lo menos algunos dispositivos de seguridad en su lugar. Hasta ahora parece estar funcionando bien. – Danielg