Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Программная модель Web-форм. Сохранение состояния. Порядок обработки Web-форм



Программная модель Web-форм. Сохранение состояния. Порядок обработки Web-форм

Web-формы в ASP.NET — это основной элемент динамического Web-сайта; комбинация кода HTML, программного кода и элементов управления.

Программная модель Web-формы содержит:

пользовательский интерфейс, который состоит из элементов управления ASP.NET и HTML-тэгов;

серверные элементы управления, которые генерируют события, которые можно обрабатывать, используя серверный код;

серверный код, который представляет собой набор классов, которые содержат обработчики событий для элементов управления и методы.

Сохранение состояния

Управление состоянием – это процесс, с помощью которого вы сохраняете состояние страницы (или страниц) и информацию, связанную с ней, на протяжении некоторого количества запросов к данной странице.

В Web-программировании ASP.NET предоставляет несколько удобных функций для сохранения состояния при запросах, посылаемых по протоколу запросах, посылаемых по протоколу передачи гипертекстовых файлов HTTP. Необходимо сохранять два типа состояния:

состояние приложения — глобальная информация, которая совместно используется всеми пользователями Web-приложения;

состояние сеанса используется для хранения данных конкретного пользователя, который многократно обращается к Web-приложению.

ASP.NET поддерживает множество вариантов управления состоянием как на клиентской части приложения, так и на сервере.

Варианты использования на стороне клиента:

Свойство View State

Скрытые (hidden) поля

Использование cookie

Использование строк запросов

На стороне сервера:

Использование состояния приложения

Использование состояния сессии

Хранение в базе данных

На стороне клиента:

1. Использование View State

Свойство Control.ViewState предлагает словарь для хранения значений между вызовами одной и той же страницы. Это способ, с помощью которого страница сохраняет состояние элементов управления между такими запросами. Во время обработки страницы текущее состояние страницы и её элементов управления хэшируется в строчку, значение которой хранится в странице как скрытое поле. Когда страница отправляется назад на сервер, происходит разбор этой строки во время инициализации страницы и восстановление состояния страницы и элементов управления, расположенных на ней.

Преимущества использования view state:

Не используются ресурсы сервера. View state содержится в структуре самой страницы.

Простая реализация.

Автоматическое сохранение состояния страницы и элементов управления.

Улучшенная безопасность – значения во view state захэшированы, сжаты и кодированы в Unicode,что представляет собой более безопасный вариант по сравнению со скрытыми полями.

Недостатки использования view state:

Быстродействие. Поскольку view state хранится в самой странице, хранение больших значений приводит к замедлению отображения страницы и отправки её на сервер.

Безопасность. View state хранится в скрытом поле на странице. И хотя информация хранится в хешированном виде, это не защитит её от фальсификации или другого вида вмешательства. Информация хранится в скрытом поле и может быть увидена при просмотре исходного кода страницы, что уже само по себе потенциально небезопасно.

2. Скрытые поля формы

ASP.NET позволяет использовать скрытые поля формы, являющиеся стандартными в HTML. Скрытое поле не отображается в браузере, но его свойства можно устанавливать также, как и в случае обычных элементов управления. При пересылке страницы на сервер содержимое скрытого поля отсылается в коллекции HTTP формы наряду со значениями других элементов управления. Скрытое поле работает как некое хранилище для любой информации, специфичной для данной страницы, которую вы храните в самой странице. Скрытое поле хранит единственную переменную в свойстве value и должно быть явно добавлено к странице, после чего собственно и происходит добавление к нему значения. ASP.NET содержит класс HtmlInputHidden, который и реализует функциональность скрытого поля.

Преимущества использования скрытых полей заключаются в следующем:

Нет необходимости в использовании серверных ресурсов. Скрытые поля хранятся и считываются из страницы.

Широкая поддержка - практически все браузеры и устройства-клиенты поддерживают формы со скрытыми полями.

Простота реализации.

Недостатки использования скрытых полей:

Безопасность. Существует возможность вмешательства в значения, хранящиеся в скрытых полях, которые видны при просмотре исходного кода страницы, что потенциально небезопасно.

Ограниченная структура хранилища. Скрытые поля не поддерживают хранение сложных структур, предлагая только одно поле value, в которое можно поместить информацию. Для хранения нескольких значений в этом поле необходимо использовать строчки с разделителем и реализацию их анализа в коде.

Быстродействие. Поскольку скрытые поля хранятся в самой странице, хранение больших значений переменных может привести к тому, что отображение в браузере или отправка страницы будет несколько медленнее.

3. Куки (Cookies)

Куки (cookie) – небольшой объём информации, хранящийся в текстовом файле на стороне клиента или в памяти сессии браузера клиента. В куки хранится информация, специфичная для страницы, которую сервер отправляет клиенту вместе с запрошенной страницей. Куки бывают временные (с определённой датой и временем истечения срока действия) или постоянными.

Можно использовать куки для хранения информации о конкретном клиенте, сессии или приложении. Куки хранятся на устройстве клиента и, во время запроса страницы браузером, происходит отправка информации, хранящейся в куки вместе с запрошенной информацией. Сервер может прочесть куки и получить данную информацию в своё распоряжение. Типичный пример использования – хранение некоего признака того, что пользователь уже прошёл аутентификацию в вашем приложении. Браузер может отослать данные только тому серверу, который создал этот самый файл куки. Куки – относительно безопасный способ хранения данных, характеризующих данного конкретного пользователя.

Преимущества использования куки:

Экономия ресурсов сервера. Куки хранятся на клиенте и считываются сервером после отправки страницы.

Простота. Куки – это небольшая текстовая структура с простыми парами ключ-значение.

Конфигурируемое время действия. Куки могут прекращать своё существование по окончанию сессии браузера или наоборот, постоянно находиться на клиентской машине, предоставив самому клиенту управлять временем своей жизни.

Недостатки использования куки:

Ограниченный размер. Большинство браузеров ограничивают размер куки в 4096 байт, хотя использование ограничения в 8192 байта становится всё более распространённым в новых их версиях.

Пользователь имеет возможность отказаться от использования куки, что делает их применение ограниченным.

Безопасность. Существует возможность вмешательства пользователя в данные, хранящиеся в куки, что потенциально небезопасно.

Длительность существования. Существование куки ничем не гарантировано – пользователь может удалить файл до того, как завершится срок истечения его действия.

4. Строки запросов

Под строкой запроса здесь имеется в виду информация, добавленная к концу URL’a страницы. Например:

http://www.contoso.com/listwidgets.aspx?category=basic&price=100

Строки запросов предлагают простой, но ограниченный способ хранения некоторой информации. Например, они являются лёгким способом передачи информации от страницы к странице, однако большинство браузеров ограничивают длину URL’a 255 символами. Для того чтобы воспользоваться значениями, передаваемыми с помощью строки запроса, необходимо передавать страницу с помощью метода HTTP GET.

Преимущества:

Экономия ресурсов сервера.

Широкая поддержка. Практически все браузеры и клиентские устройства поддерживают такой способ передачи значений.

Простая реализация. ASP.NET полностью поддерживает такой способ передачи значений, включая методы для чтения строк запроса с использованием свойства HttpRequest.Params.

Недостатки:

Несоответствие требованиям безопасности – значения легко изменить в браузере.

Ограниченная вместимость – в основном ограничивается 255 символами на весь URL.

На стороне сервера:

1. Состояние приложения

Для каждого активного веб-приложения ASP.NET позволяет нам сохранять значения переменных, используя состояние приложения (объект класса HttpApplicationState). Состояние приложение – глобальный механизм хранения переменных, которые доступны из всех страниц веб-приложения и может использоваться для хранения данных во время передачи страницы от сервера к клиенту и назад или для передачи данных между страницами.

Преимущества:

Лёгкость использования.

Глобальная область видимости. Поскольку состояние приложения доступно для всех страниц приложения, хранение информации в этой структуре означает хранение только одной копии такой информации (например, в отличие от использования сессионных переменных).

Недостатки:

Глобальная область видимости также может быть минусом. Переменные приложения глобальны только для некоторого процесса приложения и каждый процесс приложения может иметь разные значения. Поэтому вы не можете полагаться на переменные уровня приложения в случае хранения уникальных значений или обновления глобальных счётчиков в случае веб-садов или веб-ферм.

Устойчивость. Поскольку глобальные данные, хранимые в состоянии приложения являются временными, то они исчезнут при разрушении процесса на веб-сервере – чаще всего такое происходит из-за зависания веб-сервера, его обновления или отключения.

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

2. Состояние сессии

ASP.NET позволяет хранить переменные, используя состояние сессии, являющейся объектом класса HttpSessionState, создаваемого для каждой активной сессии веб-приложения. Состояние сессии подобно состоянию приложения, единственное отличие – значения переменных, сохранённых в ней, будут видно только для текущей сессии браузера. И если разные пользователи используют ваше приложение, то каждый из них будет иметь различные сессии. К тому же, если пользователь выходит из приложения, а потом возвращается, то он будет работать в другой сессии, а не в той, из которой вышел. Структура состояние сессии аналогична структуре состояния приложения.

Преимущества:

Лёгкость реализации. Использование переменных сессии легко, знакомо разработчикам, использовавших классический ASP и согласуется с другими классами.NET Framework.

Возможность использования событий, специфических для сессии.

Продолжительность существования. Данные, размещённые в сессионных переменных, могут пережить рестарт IIS’a (Internet Information Services) и рабочего процесса, поскольку хранятся в другом процессе.

Масштабируемость платформы. Сессионное состояние может использоваться в многокомпьютерных и многопроцессных конфигурациях.

Сессионные структуры работают с браузерами, не поддерживающими куки.

Недостатки:

Эффективность работы. Переменные сессии остаются в памяти до тех пор, пока их не удаляют или перезаписывают, что может сказаться на быстродействии сервера, особенно если они содержат большие наборы данных, например dataset’ы.

3. Поддержка БД

Использовать хранение состояние с помощью технологий баз данных является общепринятой практикой в случае хранения больших объёмов информации, специфичной для пользователя. Хранение в БД бывает полезно тогда, когда информацию нужно хранить в течение длительного времени или тогда, когда состояние должно быть сохранено даже в случае перезагрузки сервера.

Преимущества:

Безопасность. Доступ к БД обычно предоставляет высокую степень безопасности, требуя аутентификации и авторизации.

Объём. Вы можете хранить столько информации в БД, сколько захотите.

Постоянство. Информация в БД может храниться столько времени, сколько вы пожелаете, и никак не зависит от доступности веб-сервера.

Целостность данных.

Доступность. Данные, хранящиеся в БД, доступны для обработки широким спектром инструментов обработки информации.

Широкая поддержка. Доступен целый спектр различных инструментов, для обработки хранящейся информации.

Недостатки:

Сложность.

Эффективность. Ошибки в проектировании могут привести к проблемам масштабирования, а использование большого числа запросов может снизить быстродействие сервера.

Порядок обработки Web-форм

Самое сложное в понимании процесса обработки HTML-форм состоит в том, чтобы понять "что где происходит". При просмотре посетителем Web-страницы, не содержащей формы, сервер просто отвечает на запросы браузера о передаче Web-страницы и таких отдельных ее элементов, как графика и анимация. Например, при "посещении" Web-сайта браузер посетителя запрашивает Web-страницу у сервера. После передачи HTML-страницы сервером браузер обрабатывает HTML-операторы и начинает выводить содержимое страницы на экран. Если при обработке странице браузер встретит дескриптор, требующий получения от сервера дополнительных данных, например, дескриптор <img>, который используется для описания графики, браузер посылает серверу запрос на передачу требуемого файла.

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

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

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

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





Дата публикования: 2015-02-03; Прочитано: 760 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.013 с)...