Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПвИ / Конспект лекций.doc
Скачиваний:
224
Добавлен:
01.06.2015
Размер:
1.05 Mб
Скачать

Файлы Web-приложения

Компонуя проект Web Forms, Visual Studio. NET компилирует весь исходный текст в исполняемый DLL-файл и помещает его в каталог /bin. Часть Web-приложения, отвечающая за его вид, остается в aspx- и html-файлах. На рисунке показаны файлы, которые получаются в результате компоновки Web-приложения:

Когда браузер запрашивает начальную страницу приложения (http://localhost/WebForm1.aspx), IIS запускает исполняемую часть приложения (WebApplication1.dll) и генерирует отклик. В этом случае отклик содержит страницу, определение которой находится в файле WebForm1.aspx. Если на странице произошло событие (например, пользователь нажал кнопку), страница возвращается на сервер, где DLL-файл приложения обрабатывает это событие.

Обработка событий События жизненного цикла Web-приложения

Web-приложения живут, пока у них есть хоть один активный сеанс, а Web-формы живут буквально мгновения. Жизнь Web-приложения начинается, когда браузер запрашивает его начальную страницу. В этот момент Web-сервер запускает исполняемую часть приложения (DLL), формирующую отклик. Исполняемая часть создает экземпляр запрошенной Web-формы, генерирует HTML-текст отклика и посылает его браузеру, после чего DLL приложения уничтожает созданный экземпляр Web-формы.

После получения браузером HTML, сгенерированного приложением, пользователь может заполнять текстовые поля формы, устанавливать нужные переключатели и выполнять другие действия, пока он не спровоцирует событие, вызывающее отправку формы на сервер. Это событие заставит браузер отослать данные страницы (ее состояние отображения) обратно на сервер для обработки события. Получив состояние отображения, сервер создает новый экземпляр Web-формы, заполняет его данными состояния отображения и обрабатывает все события. Завершив обработку, сервер возвращает браузеру полученный в результате HTML и уничтожает созданный им экземпляр Web-формы.

Закончив работу, пользователь закрывает браузер либо переходит на другой Web-сайт, в результате сеанс этого пользователя завершается. Если с приложением больше никто не работает (то есть сеансов больше нет), оно завершается. Однако это не всегда происходит сразу. В отличие от OLE, где управление памятью базируется на подсчете ссылок, ASP.NET управляет памятью при помощи “сбора мусора”. При использовании этого механизма сервер периодически проверяет ссылки объектов. Обнаружив объект, который больше не используется, сервер уничтожает его, освобождая занятую им память. Как следствие, нельзя сказать наверняка, когда именно сработает событие Application_End.

Сохранение данных Web-формы

Поскольку Web-формы живут очень не долго, ASP.NET принимает специальные меры для сохранения данных, введенных в элементы управления Web-формы. С каждым запросом на сервер отправляются все данные, которые были введены в элементы управления, где они записываются в элементы управления во время обработки события Page_Init. Далее эти данные будут доступны обработчику события Page_Load.

Данные, которые ASP.NET сохраняет между передачей запросов, называются состоянием отображения (view state) Web-формы. Состояние отображения Web-формы доступно только внутри этой Web-формы. Чтобы сделать введенные в Web-форму данные доступными другим Web-формам приложения, необходимо сохранить их в переменных состояниях (в объектах Application либо Session). Эти объекты отличаются областью действия:

  • переменные состояния на основе объекта Application доступны всем пользователям приложения, поэтому их можно рассматривать как глобальные переменные, доступные нескольким пользователям. Эти переменные разрешается читать и записывать из любых сеансов;

  • переменные состояния на основе объекта Session доступны в пределах одного сеанса (только одному пользователю). Переменные Session напоминают глобальные переменные стандартных Windows-приложений. Эти переменные состояния доступны только в текущем сеансе.

Переменные Application и Session объявляются иначе, чем обычные. Переменные состояния создаются кодом «на лету». Следующий код подсчитывает, сколько раз щелкнули кнопку, и записывает результат в переменную состояния Session.

Соседние файлы в папке ПвИ