Pregunta

El siguiente texto es del libro que estoy leyendo, 'MCTS Paced Training Kit (Exam 70-515) Desarrollo de Aplicaciones Web con ASP.NET 4" . Se da el resumen del ciclo de vida de la aplicación.

  1. Un usuario realiza primero una petición de una página en su sitio.
  2. La solicitud se dirige a la canalización de procesamiento, el cual lo reenvía al tiempo de ejecución de ASP.NET.
  3. El tiempo de ejecución de ASP.NET crea una instancia de la clase ApplicationManager; esta instancia de clase representa el dominio de .NET Framework que se utiliza para ejecutar las peticiones de su aplicación. Un dominio de aplicación aísla variables globales de otras aplicaciones y permite que cada aplicación para cargar y descargar por separado, según sea necesario.
  4. Después de crear el dominio de aplicación, se crea una instancia de la clase HostingEnvironment. Esta clase proporciona acceso a los artículos dentro del entorno de alojamiento, tales como carpetas de directorio.
  5. ASP.NET crea instancias de los objetos de la base que se van a utilizar para procesar la solicitud. Esto incluye HttpContext, HttpRequest, y HttpResponse objetos.
  6. ASP.NET crea una instancia de la clase HttpApplication (o una instancia se reutiliza). Esta clase también es la clase base para el archivo Global.asax de un sitio. Puede utilizar esta clase de eventos que suceden trampa cuando su aplicación se inicia o se detiene. Cuando ASP.NET crea una instancia de HttpApplication, sino que también crea los módulos configurados para la aplicación, como el SessionStateModule.
  7. Por último, los procesos de ASP.NET solicitud a través del HttpApplication pipleline. Este gasoducto también incluye un conjunto de eventos para la validación de las solicitudes, direcciones URL de asignación, el acceso a la caché, y mucho más.

Luego, el libro demuestra un ejemplo del uso del archivo Global.asax:

   <script runat="server">
void Application_Start(object sender, EventArgs e)
{
Application["UsersOnline"] = 0;
}
void Session_Start(object sender, EventArgs e)
{
Application.Lock();
Application["UsersOnline"] = (int)Application["UsersOnline"] + 1;
Application.UnLock();
}
void Session_End(object sender, EventArgs e)
{
Application.Lock();
Application["UsersOnline"] = (int)Application["UsersOnline"] - 1;
Application.UnLock();
}
</script>

Cuando se inicia una aplicación? ¿Cuál es la diferencia entre sesión y nivel de aplicación? Estoy bastante confusa sobre cómo se logró. Pensé que las clases de nivel de aplicación "se sentaron en la parte superior de" un objeto dominio de aplicación, y el dominio de aplicación contiene información específica para esa sesión de ese usuario. Podría alguien explicar cómo maneja IIS clases de nivel applicaiton, y cómo una clase HttpApplication se sienta bajo un dominio de aplicación? Cualquier cosa es apreciado.

¿Fue útil?

Solución

Nada vive fuera de un AppDomain así que por supuesto la HttpApplication tiene que ser dentro de una instancia.

Paso 3 a 6 sólo ocurre una vez en la vida útil de su aplicación. Cuando se ha creado una instancia ApplicationManager que no será creado de nuevo para la siguiente petición. Lo mismo es para HostingEnvironment y HttpApplication. Esto significa que los valores almacenados en la Solicitud-colección se mantienen allí para obtener para todas las peticiones posteriores durante el tiempo de vida de la aplicación.

Hay una AppDomain por aplicación, no por sesión o por petición.

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