2010-11-09 15 views
5

Dado que la carga de ensamblaje dinámico requiere la carga del dominio de aplicación para permitir matar el ensamblado con el dominio de descarga relacionado, ¿hay un número "máximo" de aplicaciones en un proceso para cargar? Estoy pensando en una aplicación basada en servidor en la que cada usuario pueda ejecutar dinámicamente su código propietario de C#. Pero, ¿qué ocurre si, digamos, 2000 usuarios inician sesión y cargan sus códigos? ¿Hay alguna restricción posible que pueda encontrar además del número de appdomians?Número máximo de aplicaciones cargadas en un proceso

gracias.

Respuesta

5

Casi todos los límites de CLR se basan en "como la memoria lo permite". La única excepción que conozco es la cantidad de miembros de una clase, restringida a 65536. Eso se basa en la definición de un valor de token. Nada como eso para AppDomains.

+3

ASP.NET no crea 1 'AppDomain' por solicitud. Básicamente es 1 por sitio web ASP.NET. Ese 'AppDomain' permanece vivo durante bastante tiempo, aunque hay condiciones que lo" reciclarán "automáticamente. No estoy seguro de qué es SQL Server, pero un nuevo 'AppDomain' no se crea para cada consulta. –

+0

@bin - el aislamiento de fallas es la clave afaik. Una vez que un hilo muere en una excepción no controlada, el anuncio es basura. No puede ser que esa página * one * solicite que las bombas maten a todas las otras simultáneas. Reciclar unos que no murieron suena tal vez. No sé las reglas exactas. –

+0

ASP.NET tiene un gran try/catch alto en la pila. Embudos en el evento 'HttpApplication.Error'. Si no hay controlador, muestra la página de error predeterminada 500. Si algo realmente malo sucede, ASP.NET reciclará el dominio, o todo el proceso de trabajo podría reiniciarse, pero la mayoría de las excepciones no controladas no causan estos problemas. –

5

No creo que haya un valor máximo definitivo incorporado en el CLR. Más bien, sería la cantidad de memoria que queda la que determina si puede cargar dinámicamente un nuevo dominio de aplicación.

Haré un poco de investigación, pero no creo que haya un valor establecido para esto.

EDIT:

Here's otro post lo que podría ayudar a aclarar las cosas.

1

Mayormente se definiría por los límites de su sistema operativo. Su máquina x86 no puede usar más de 4GB en memoria para un proceso [solo 2GB en modo de usuario]. Si usa x64, tiene un límite mucho mayor. Por lo que sé, no existe tal límite en la cantidad de dominios de aplicación que puede crear.