Цитата из MSDN о System.Web.HttpApplication - PullRequest
3 голосов
/ 10 сентября 2010

Цитата от http://msdn.microsoft.com/en-us/library/4wt3wttw.aspx:

Один экземпляр приложения HttpApplication класс используется для обработки многих запросов в его жизни. Тем не менее, это может обрабатывать только один запрос за раз. Таким образом, переменные-члены могут быть использованы для хранить данные по запросу .

Почему за запрос? Может быть, за набор запросов? Кажется, что переменные-члены могут использоваться для хранения данных в течение всего жизненного цикла HttpApplication. Таким образом, состояние HttpApplication в начале второго (для этого HttpApplication) запроса равно состоянию в конце первого (для этого HttpApplication) запроса.

Почему за запрос?

Ответы [ 2 ]

2 голосов
/ 10 сентября 2010

Указывается, что члены объекта HttpApplication могут использоваться для хранения данных по запросу.Это не означает, что участники ограничены данными для каждого запроса.Член HttpApplication.Application содержит элементы, которые являются глобальными для всего приложения, но во время обработки запроса конкретный экземпляр HttpApplication может изменять только глобальную информацию, хранящуюся в объекте ApplicationState, с помощью информации в запросе, обрабатываемом в данный момент.Если бы объект HttpApplication имел доступ к нескольким запросам одновременно, возможно, он мог бы изменять глобальные данные с помощью агрегирования или выбирать данные из любого из запросов.Как упомянул @Sidharth Panwar, это создаст проблемы параллелизма, и это будет также кошмаром для разрешения обработки нескольких запросов, потому что они должны быть гарантированно получены от одного пользователя (по соображениям безопасности / памяти), который не можетбыть гарантированным, поскольку IIS ставит в очередь следующий доступный объект HttpApplication при каждом новом запросе.Это привело бы к тому, что один экземпляр мог бы обрабатывать большую часть нагрузки (и, таким образом, избавляться от проблем).

0 голосов
/ 10 сентября 2010

Запрос, когда бы он ни поступал в IIS, передается одному из экземпляров HttpApplication (выбирается из пула приложений веб-приложения).События этого HttpApplication (определенного в global.asax) будут доступны для запроса.

Из того, что я понимаю, было бы несогласованность, если бы несколько запросов могли одновременно обращаться к HttpApplication.Asp.Net сама по себе очень сложная архитектура, параллелизм сделает работу с ней настоящим кошмаром.

Данные по запросу слегка искажены, или я, возможно, не понял концепцию правильно, но я думаю, что это должно означать, что в определенный момент времени HttpApplication обрабатывает только один запрос, а не то, что он может содержатьпеременные / значения, помещенные в объект Application одним запросом.Поскольку любые данные, помещаемые в объект Application, не относятся к отдельным запросам, они доступны для всех запросов.

Дайте мне знать, ищите ли вы это: P

PS Вот BEST ссылка для понимания Asp.Net (http://www.west -wind.com / presentation / howaspnetworks / howaspnetworks.asp )

Проверьте раздел HttpApplication, чтобы понять этолучше.

...