Domanda

Il testo che segue è tratto dal libro che sto leggendo, 'MCTS Self-Paced Training Kit (esame 70-515) Applicazioni Web di sviluppo con ASP.NET 4" . Dà la riduzione di attività di Application Life Cycle.

  
      
  1. Un primo utente effettua una richiesta per una pagina del sito.
  2.   
  3. La richiesta viene inoltrata al pipeline di elaborazione, che lo inoltra al runtime di ASP.NET.
  4.   
  5. Il runtime ASP.NET crea un'istanza della classe ApplicationManager; questa istanza di classe rappresenta il dominio framework .NET che verrà utilizzato per eseguire le richieste per l'applicazione. Un dominio applicazione isola variabili globali da altre applicazioni e permette ad ogni applicazione di carico e scarico separatamente, come richiesto.
  6.   
  7. Dopo che il dominio di applicazione è stata creata, viene creata un'istanza della classe HostingEnvironment. Questa classe fornisce l'accesso agli elementi all'interno dell'ambiente di hosting, come ad esempio le cartelle di directory.
  8.   
  9. ASP.NET crea le istanze degli oggetti principali che verranno utilizzati per elaborare la richiesta. Questo include HttpContext, HttpRequest e HttpResponse oggetti.
  10.   
  11. ASP.NET crea un'istanza della classe HttpApplication (o un'istanza viene riutilizzato). Questa classe è anche la classe di base per il file Global.asax di un sito. È possibile utilizzare questa classe per intercettare gli eventi che si verificano quando l'applicazione si avvia o si arresta. Quando ASP.NET crea un'istanza di HttpApplication, crea anche i moduli configurati per l'applicazione, come il SessionStateModule.
  12.   
  13. Infine, processi ASP.NET richiesta tramite il HttpApplication pipleline. Questo gasdotto include anche una serie di eventi per la convalida richieste, URL mapping, accesso alla cache, e altro ancora.
  14.   

Il libro quindi dimostrato un esempio di utilizzo del file 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>

Quando si avvia un'applicazione? Qual'è la differenza tra sessione e livello di applicazione? Sto piuttosto confuso su come questo viene gestito. Ho pensato che le classi livello di applicazione "SAT in cima ad" un oggetto AppDomain, e il dominio di applicazione conteneva informazioni specifiche per tale sessione per quell'utente. Qualcuno potrebbe spiegare come IIS gestisce classi di livello applicaiton, e come una classe HttpApplication siede sotto un dominio di applicazione? Nulla è apprezzato.

È stato utile?

Soluzione

Niente vive fuori di un AppDomain così, naturalmente, la HttpApplication ha da istanziato all'interno di uno.

Passaggio 3-6 capita solo una volta nella vita della vostra applicazione. Quando un'istanza ApplicationManager si è creato è solito essere creato di nuovo per la prossima richiesta. Lo stesso è per HostingEnvironment e HttpApplication. Ciò significa che i valori memorizzati nel Application-collezione sarà rimangono lì per ottenere per tutte le richieste successive durante il ciclo di vita dell'applicazione.

C'è un AppDomain per applicazione, non per sessione o per richiesta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top