INFORMACIÓN: Instancias de aplicaciones, eventos de aplicación y estado de aplicación de ASP.NET

Seleccione idioma Seleccione idioma
Id. de artículo: 312607 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

El objeto HttpApplication ASP.NET oculta muchos conceptos complejos para simplificar el modelo de programación. En este artículo se describe algunas de estas complejidades. Además, en este artículo se describe cómo ASP.NET trata problemas de compatibilidad con el objeto clásico de aplicación de páginas Active Server (ASP).

Este artículo está dividido en las secciones siguientes:

Más información

Clase de aplicación y las instancias de Application

Se define una clase de aplicación en el archivo global.asax. El código en global.asax define una nueva clase que se deriva de System.Web.HttpApplication . En ausencia de un archivo global.asax, se utiliza la clase base HttpApplication , como la clase de aplicación.

El motor en tiempo de ejecución de ASP.NET crea tantas instancias de clases de aplicaciones según sea necesario para procesar las solicitudes simultáneamente. La mayoría de las aplicaciones, este número está limitado al número de subprocesos y permanece en el intervalo de 1 a 100, en función del hardware, carga del servidor, configuración y así sucesivamente. Muchas solicitudes de volver a utilizar instancias de la aplicación y una lista libre de instancias de la aplicación se mantiene durante períodos de carga reducida. Se utilizan instancias de la aplicación en un modo seguro para subprocesos, es decir, una solicitud a la vez. Esto tiene implicaciones importantes:
  • No es necesario preocuparse de bloqueo al obtener acceso a miembros no estáticos de la clase de aplicación.
  • Código de la aplicación puede almacenar datos de solicitud para cada solicitud en miembros no estáticos de la clase de aplicación (pero no después el evento EndRequest ya que este evento puede mantienen la solicitud durante un largo período de tiempo).
Como miembros estáticos de cualquier clase, incluso una clase de aplicación, no son seguros para subprocesos, el código de usuario debe proporcionar bloqueo apropiado para tener acceso a miembros estáticos. Esto se aplica a cualquier miembro estático que agregue a la clase de aplicación.

Utilice las directrices siguientes para tener acceso a la instancia de aplicación que está asociada a la solicitud actual:
  • De global.asax, utilice el este o Me objeto.
  • Desde una página, cada página incluye una propiedad de ApplicationInstance con establecimiento inflexible de tipos.
  • Desde el objeto HttpContext , utilice la propiedad HttpContext.ApplicationInstance (que se escriba como HttpApplication ).
Nota Porque aplicación hace referencia al diccionario de estado global de la aplicación de ASP clásico, ASP.NET utiliza ApplicationInstance y no de la aplicación como un nombre de propiedad para hacer referencia a la instancia de aplicación que procesa la solicitud actual.

Eventos de aplicación

La duración de una solicitud consta de una serie de los eventos de aplicación (y algunos pasos implícitas que implementa ASP.NET). Estos eventos se enumeran a continuación, en el orden en que se ejecutan:
  1. BeginRequest
  2. evento AuthenticateRequest
  3. Suceso interno DefaultAuthentication
  4. evento AuthorizeRequest
  5. evento ResolveRequestCache
  6. Paso interno para "mapa controlador" (cuando realiza compilación, se crea una instancia de página)
  7. evento AcquireRequestState
  8. evento PreRequestHandlerExecute
  9. Paso interno para "ejecutar el controlador" (cuando se ejecuta el código de página)
  10. evento PostRequestHandlerExecute
  11. evento ReleaseRequestState
  12. Paso interno al filtro respuestas UpdateRequestCache evento
  13. evento UpdateRequestCache
  14. evento EndRequest
Nota Si utiliza Server.Transfer o Response.Redirect(string) , eficazmente se interrumpe la solicitud actual y algunos de los eventos enumerados anteriormente no se generará. Sin embargo, se producirá el evento EndRequest en este escenario.

Los elementos siguientes pueden controlar estos eventos:
  • Marco de página interna de ASP.NET (por ejemplo, los pasos 6, 9 y 12 en la lista anterior).
  • Módulos HTTP que están configurados para la aplicación. La lista predeterminada de módulos HTTP se define en el archivo Machine.config.
  • Código de global.asax que está enlazado a través del método Application_ [Activado] EventName o que está enlazado explícitamente cuando agrega controladores de eventos para un nombre de controlador alternativo.
Cada evento puede tener suscriptores sincrónicos y asincrónicos. Los suscriptores asincrónicos se ejecutan primero. No todos los eventos se ejecutan siempre; el único evento que se ejecuta siempre es EndRequest . Como resultado, limpiar todo after-request en el evento EndRequest .

Nota En la mayoría de los casos, la respuesta real se envía al cliente una vez finalizada la instancia de la aplicación con la respuesta (que es después EndRequest ).

Application_OnStart y Application_OnEnd

ASP.NET presenta "los únicos eventos Application_OnStart y Application_OnEnd" para la compatibilidad con ASP clásico. Estos "eventos" se ejecutan sólo una vez en la duración de una aplicación y no para cada instancia de la aplicación. Por tanto, si cambia los miembros no estáticos en estos métodos, afecta a sólo una aplicación instancia y no todas las instancias. Se puede inicializar una instancia de aplicación en el constructor o reemplazando el método Init .

Application_OnStart es un equivalente lógico al constructor de clase para la clase de aplicación, pero ofrece una ventaja: el código tiene acceso al HttpContext para la primera solicitud a la aplicación.

Estado de la aplicación

Estado de aplicación es un diccionario global de objetos enlazados en tiempo de ejecución, que presenta ASP clásico para compensar la ausencia de variables globales en Microsoft Visual Basic Scripting Edition (VBScript). En ASP.NET, puede tener acceso el estado de aplicación a través de uno de los siguientes:
  • propiedad de la aplicación (que se define en las clases de página y HttpApplication )
  • HttpContext.Application
ASP.NET incluye el estado de aplicación principalmente por compatibilidad con ASP clásica para que resulta más fácil de migrar aplicaciones existentes a ASP.NET. Se recomienda que almacenar datos en miembros estáticos de la clase de aplicación en lugar de en el objeto Application . Esto aumenta el rendimiento ya que puede tener acceso a una variable estática más rápido que puede tener acceso a un elemento de la aplicación diccionario.

Para obtener acceso a miembros estáticos de la aplicación desde las páginas de Microsoft Visual C# .NET y Microsoft Visual Basic. NET, debe utilizar el atributo ClassName en global.asax para nombrar la clase de aplicación. Para ejemplo:
<%@ Application Language="C# | VB" ClassName="MyClass" %>
				
si un miembro static se denomina MyStaticMember en el archivo global.asax, se puede utilizar MyClass.MyStaticMember tener acceso desde la página.

Propiedades

Id. de artículo: 312607 - Última revisión: miércoles, 21 de enero de 2004 - Versión: 5.3
La información de este artículo se refiere a:
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
Palabras clave: 
kbmt kbappdev kbhttpruntime kbinfo kbstate KB312607 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 312607

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com