Grupos de aplicaciones de IIS, procesos de trabajo, dominios de aplicaciones

88

¿Alguien puede explicar las diferencias, en IIS, entre grupos de aplicaciones, procesos de trabajo y dominios de aplicaciones? Además, ¿cómo trabajan juntos? He leído un par de artículos, pero todavía es un poco confuso.

  1. ¿Cada sitio web creado en IIS se convierte en una aplicación?
  2. ¿Cada aplicación está asociada con un proceso de trabajo?
  3. ¿Dónde entran en juego los dominios de aplicaciones?
Ravi
fuente

Respuestas:

103

Intento decirlas con otras palabras.

En un servidor puede tener muchos sitios asp.net que se ejecutan juntos. Cada sitio es un dominio de aplicación .

Debe asignar a cada uno de ellos un grupo de aplicaciones . Muchos dominios de aplicaciones (sitios) pueden tener el mismo grupo de aplicaciones y, debido a que tienen el mismo grupo de aplicaciones, se ejecutan bajo los mismos procesos y bajo la misma cuenta, y tienen la misma configuración del grupo. Si este grupo se reinicia, todos los sitios bajo ese grupo se reinician.

Ahora cada grupo puede tener uno o más procesos de trabajo . Cada proceso de trabajo es un programa diferente que ejecuta su sitio, tiene sus propias variables estáticas, inician llamadas de parada diferentes, etc. Los diferentes procesos de trabajo no se comunican entre sí y la única forma de intercambiar datos es desde archivos comunes o una base de datos común. Si tiene más de un proceso de trabajo y uno de ellos hace cálculos de mucho tiempo, el otro puede encargarse de manejar las llamadas de Internet y mostrar el contenido.

Cuando asigna muchos procesos de trabajo a un solo grupo, crea el jardín web llamado y su sitio se ejecuta desde más de una computadora si una computadora es una máquina de procesamiento.

dominios de aplicaciones, con grupos y procesos

Cada proceso de trabajo puede tener muchos hilos.

Cómo te afecta el proceso más trabajador:
cuando tienes un proceso trabajador, todo es más simple, entre tu aplicación todas las variables estáticas son iguales y usas el lockpara sincronizarlas.
Cuando asigna más de un proceso de trabajo, sigue utilizando lockpara variables estáticas, las variables estáticas no son diferentes entre las muchas ejecuciones de su sitio y si tiene algún recurso común (por ejemplo, la creación de una miniatura en el disco) entonces necesitas sincronizar tu proceso de trabajador con Mutex.

Una nota más. Parece que cuando haces más procesos de trabajo, es posible que tengas cargas de página asincrónicas más fluidas. Hay un pequeño problema con el controlador de sesión de asp.net que es bloquear todo el proceso para la carga de una página, eso es bueno y no bueno, depende de si lo conoce y lo maneja, o lo cambia.

Así que hablemos de un solo sitio con muchos procesos de trabajo. Aquí se enfrenta al problema con el que necesita sincronizar su cambio de recurso común Mutex. Pero las páginas / manejadores que usan la sesión no son asincrónicas porque la sesión las bloquea. Esto es bueno para empezar porque evita hacer usted mismo esta sincronización de muchos puntos.

Algunas preguntas sobre este tema:
Aplicación web bloqueada mientras se procesa otra aplicación web al compartir la misma sesión Las
llamadas jQuery Ajax al servicio web parecen ser sincrónicas
ASP.NET Server no procesa las páginas de forma asincrónica
Reemplazando la sesión de ASP.Net por completo

Ahora bien, este bloqueo de sesión no afecta a diferentes sitios.

Entre los diferentes sitios, el proceso más trabajado puede ayudar a que un sitio no bloquee al otro con un proceso de larga duración.
Además, entre los diferentes sitios, más grupos también pueden ayudar, porque cada grupo tiene al menos un proceso trabajado, pero recuerde y vea usted mismo usando el explorador de procesos, cada proceso de trabajo requiere más memoria de su computadora y un gran servidor con memoria 16G y un servidor SQL no puede tener demasiados procesos de trabajo diferentes; por ejemplo, en un servidor con 100 sitios compartidos, no puede tener 100 grupos diferentes.

Aristos
fuente
Estoy descubriendo que es diferente de la forma en que lo maneja IIS 5 en comparación con IIS 6 y superior. Entonces, en IIS 5 tiene un proceso de trabajo y múltiples dominios de aplicación en él, en comparación con IIS 6, tiene múltiples procesos de trabajo (w3wp.exe) uno para cada grupo de aplicaciones.En IIS 6.0, inetinfo redirige a diferentes procesos de trabajo según la solicitud. ¿Estoy aquí? Aquí está mi fuente dotnetslackers.com/articles/iis/…
Ravi
@ user460103 Sí, iis5 tiene un proceso de trabajo (varios dominios de aplicaciones pueden tener solo con un pequeño truco, pero no funcionan juntos). Cuando tiene en un sitio muchos procesos de trabajo, entonces sí, iis6 puede redirigirlo a diferentes procesos de trabajo.
Aristos
¿IIS genera un nuevo proceso para cada solicitud web? ¿O gira un nuevo hilo?
variable
@variable Gire un nuevo hilo: el proceso se mantiene en funcionamiento todo el tiempo, o se recicla de la forma en que los configuró en la piscina ...
Aristos
Ok, si hay varios procesos, ¿cómo funcionan las sesiones? Pensé que la sesión es por proceso
Variable
18
  • Un servidor IIS puede tener varios grupos de aplicaciones.
  • Una aplicación web se une a un grupo de aplicaciones.
  • Un grupo de aplicaciones puede tener más de un proceso de trabajo (cuando Web Garden está habilitado).
  • Un proceso de trabajo puede tener varios dominios de aplicaciones. Un dominio de aplicación vive solo en un proceso de trabajo.
  • Un dominio de aplicación puede tener varios subprocesos. Un hilo puede ser compartido por diferentes dominios de aplicaciones en diferentes momentos.

El significado para los desarrolladores de ASP.NET: para hacer que su sitio web sea escalable, no use la sesión en proceso y no use el bloqueo de variable de clase estática para la sincronización.

Ying
fuente
7
  1. Sí, aunque no todas las aplicaciones son sitios web. Puede tener una aplicación que esté anidada en un sitio web.

  2. Sí, cada aplicación debe tener un proceso de trabajo (grupo de aplicaciones), aunque un grupo de aplicaciones puede servir a varias aplicaciones. Se puede distribuir una sola aplicación web (jardín / granja web), lo que significa que se ejecutará en varios procesos.

  3. Cada proceso se ejecutará en su propio dominio de aplicación (cada grupo de aplicaciones es un dominio de aplicación independiente).


De MSDN.

Cree una aplicación web :

Una aplicación es una agrupación de contenido en el nivel raíz de un sitio web o una agrupación de contenido en una carpeta separada en el directorio raíz del sitio web.

Grupos de aplicaciones :

Un grupo de aplicaciones define un grupo de uno o más procesos de trabajo, configurados con configuraciones comunes que sirven solicitudes a una o más aplicaciones que están asignadas a ese grupo de aplicaciones. Debido a que los grupos de aplicaciones permiten que un conjunto de aplicaciones web compartan uno o más procesos de trabajo configurados de manera similar, brindan una manera conveniente de aislar un conjunto de aplicaciones web de otras aplicaciones web en la computadora servidor. Los límites del proceso separan cada proceso de trabajo; por lo tanto, los problemas de aplicaciones en un grupo de aplicaciones no afectan a los sitios web ni a las aplicaciones de otros grupos de aplicaciones. Los grupos de aplicaciones aumentan significativamente la confiabilidad y la capacidad de administración de su infraestructura web.

Oded
fuente
Por lo tanto, el proceso de IIS tiene varios dominios de aplicaciones (grupos de aplicaciones) y cada grupo de aplicaciones puede tener varios sitios web. Entonces, ¿es que varios sitios web residen en un solo dominio de aplicación? ¿Qué pasa si algo sale mal en un sitio web, elimina todo el dominio de la aplicación y todos los sitios web que residen en él?
Ravi
@ user460103 Si bloquea un grupo, entonces sí, todos los sitios que están conectados a él se detienen y se reinician nuevamente.
Aristos
1
2. No. Una aplicación podría abarcar más de un proceso de trabajo si se configura un jardín web.
Wiktor Zychla
@Wiktor - No lo excluí. Sin embargo, respuesta actualizada para aclarar.
Oded
3

Desde el enlace de origen: -http: //weblogs.asp.net/owscott/archive/2007/09/02/application-vs-appdomain.aspx

Una aplicación es un término de IIS, pero es uno que utiliza ASP.NET. Básicamente, crea una caja de arena, o un conjunto de límites para separar diferentes sitios, o partes de sitios, de los demás.

Un AppDomain es un término .NET. (En IIS7, AppDomains juega un papel más importante dentro de IIS, pero en su mayor parte es un término ASP.NET)

El proceso de trabajo se utiliza para procesar la solicitud de la aplicación web.

Rahul Tripathi
fuente