Следующий текст из книги, которую я читаю: «MCTS Self-Paced Training Kit (Экзамен 70-515) Разработка веб-приложений с ASP .NET 4" . Это дает краткое изложение жизненного цикла приложения.Уровень приложения ASP.NET по сравнению с уровнем сеанса и Global.asax ... confused
- пользователь сначала делает запрос на странице вашего сайта.
- запрос направляется на конвейер обработки, который передает это для среды выполнения ASP.NET.
- Время выполнения ASP.NET создает экземпляр класса ApplicationManager, этот экземпляр класса представляет th e .NET framework domain, который будет использоваться для выполнения запросов для вашего приложения. Область приложения изолирует глобальные переменные от других приложений и позволяет каждому приложению загружать и разгружать отдельно, по мере необходимости.
- После того как домен приложения был создан, создается экземпляр класса HostingEnvironment. Этот класс обеспечивает доступ к элементам внутри среды хостинга, таким как папки каталогов.
- ASP.NET создает экземпляры основных объектов, которые будут использоваться для обработки запроса. Сюда входят объекты HttpContext, HttpRequest и HttpResponse.
- ASP.NET создает экземпляр класса HttpApplication (или экземпляр используется повторно). Этот класс также является базовым классом для файла Global.asax сайта. Вы можете использовать этот класс для захвата событий, которые происходят, когда ваше приложение запускается или останавливается. Когда ASP.NET создает экземпляр HttpApplication, он также создает модули, настроенные для приложения, такие как SessionStateModule.
- И, наконец, ASP.NET обрабатывает запрос через pipleline HttpApplication. Этот конвейер также включает в себя набор событий для проверки запросов, отображения URL-адресов, доступа к кешу и т. Д.
Книга затем продемонстрировал пример использования файла 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>
Когда запустить приложение? В чем разница между уровнем сеанса и приложения? Я довольно смущен тем, как это управляется. Я думал, что классы уровня приложения «сидят поверх» объекта AppDomain, а AppDomain содержит информацию, относящуюся к этому сеансу для этого пользователя. Может ли кто-нибудь объяснить, как IIS управляет классами уровня Applicaiton, и как класс HttpApplication находится под AppDomain? Все ценится.
Связанный: http://stackoverflow.com/questions/951137/asp-net-session-life-time-issue и http://stackoverflow.com/questions/2998136/advantages-and-disadvantages-of-using -приложения-переменные-в-веб-приложениях –