
- •6. Разработка на asp.Net. Жизненный цикл страницы, пользовательский интерфейс
- •6.1. Описание .Net Framework
- •6.1.1. Возможности среды clr
- •6.1.2. Библиотека классов платформы .Net Framework
- •6.1.3. Развитие платформы .Net
- •6.1.4. Ключевые термины
- •6.2. Обзор технологии asp.Net
- •6.2.1. Жизненный цикл Веб-страниц asp.Net
- •6.2.1.1. Общие этапы жизненного цикла страницы
- •6.2.1.2. События жизненного цикла
- •6.2.1.3. Дополнительные аспекты жизненного цикла страницы
- •6.2.2. Управление состоянием в asp.Net
- •6.2.3. Состояние просмотра ViewState
- •6.2.3.1. Сохранение объектов в состоянии просмотра
- •6.2.3.2. Оценивание преимуществ использования состояния просмотра
- •6.2.4. Строка запроса
- •6.2.4.1. Использование строки запроса
- •6.2.5. Cookie
- •6.2.6. Использование Session
- •6.2.6.1. Архитектура сеанса
- •6.2.6.2. Использование состояния сеанса
- •6.2.6.3. Поставщики состояния сеанса
- •6.2.6.3.1. Off
- •6.2.6.3.2. InProc
- •6.2.6.3.3. StateServer
- •6.2.6.3.4. SqlServer
- •6.2.7. Ключевые термины
- •6.3. Принципы разработки пользовательского интерфейса Интернет-приложений
- •6.3.1. Работа с текстом
- •6.3.2. Использование элементов CheckBox, CheckBoxList, RadioButton, RadioButtonList и BulletedList
- •6.3.3. Использование Image, ImageButton
- •6.3.4. Использование Literal и HiddenField
- •6.3.5. Использование Panel
- •6.3.7. Использование LinkButton
- •6.3.8. Ключевые термины
- •6.4. Краткие итоги
6.2.6.3.3. StateServer
В случае установки этого значения, ASP.NET будет использовать для управления состоянием отдельную службу Windows. Даже при запуске на том же самом Веб-сервере эта служба будет загружаться за пределами основного процесса ASP.NET, что обеспечивает для нее базовый уровень защиты, когда возникает необходимость перезапустить процесс ASP.NET. Недостатком такого подхода является то, что из-за того, что данные состояния передаются между двумя процессами, увеличивается время задержки. Если доступ к данным сеанса получается часто, и они часто изменяются, это может сильно замедлить работу.
Выбрав режим StateServer, обязательно следует указать значение для параметра stateConnectionString. Эта строка сообщает TCP/IP-адрес компьютера, на котором запускается служба StateServer, и номер его порта (который определяется ASP.NET и который, как правило, не требуется изменять). Это позволяет обслуживать службу StateServer на другом компьютере. Если не изменить значение этого параметра, будет использоваться локальный сервер (адрес которого выглядит так: 127.0.0.1).
6.2.6.3.4. SqlServer
Это значение указывает ASP.NET использовать для хранения данных сеанса базу данных SQL Server, применяя параметры, определенные в атрибуте sqlConnectionString. Такой способ управления состоянием является самым удобным, но и пока что самым медленным. Чтобы его можно было использовать, на сервере должна быть установлена база данных SQL Server.
Установка значения для атрибута sqlConnectionString выполняется по схеме, подобной той, что используется для получения доступа к данным ADO.NET. В целом это подразумевает указание источника данных (т.е. адреса сервера), имени пользователя и пароля, если только не используется интегрированная система безопасности SQL.
Обычно база данных состояния всегда называется "ASPState". Поэтому строка подключения в файле web.config не отображает явно имя базы данных. Вместо этого, она просто отражает месторасположение сервера и тип аутентификации, который будет использоваться:
<sessionState sqlConnectionString="data source=127.0.0.1;Integrated Security=SSPI" ... />
При желании использовать другую базу данных (с такой же структурой), необходимо установить для атрибута allowCustomSqlDatabase значение true и убедиться в том, что строка подключения включает параметр Initial Catalog, указывающий имя базы данных, которую следует использовать:
<sessionState allowCustomSqlDatabase="false" sqlConnectionString=
"data source=127.0.0.1;Integrated Security=SSPI;Initial Catalog=CustDatabase"
... />
Выбрав режим SqlServer, также можное установить значение для необязательного атрибута sqlCommandTimeout. Этот атрибут указывает максимальное количество секунд, в течение которых должен ожидаться ответ от базы данных, прежде чем запрос будет отменен. По умолчанию ему присваивается значение, равное 30 секундам.
6.2.7. Ключевые термины
ASP.NET, Жизненный цикл страницы, Управление состоянием, ViewState, Строка запроса, Cookies, Состояние сеанса.
6.3. Принципы разработки пользовательского интерфейса Интернет-приложений
Вопросы построения пользовательского интерфейса являются одними из самых важных в процессе разработки приложения [1]. В случае разработки Веб-приложения, они являются особенно актуальными, т.к. процесс создания пользовательского интерфейса здесь имеет ряд существенных отличий от традиционных Windows-приложений [15]. При построении Веб-приложения необходимо учитывать тот факт, что его интерфейс отображается в окне браузера, и, следовательно, ограничен его возможностями.
Разработку пользовательского интерфейса Веб-приложения можно производить как с помощью редактирования исходного кода страницы, так и с использованием встроенного в Visual Studio визуального редактора. Наиболее эффективным способом является использование комбинированного метода, при котором в некоторых режимах редактирования целесообразно пользоваться визуальными средствами, в других же случаях – средствами редактирования исходного кода.
Основной сложностью при разработке пользовательского интерфейса Веб-приложения является позиционирование его элементов. Существует четыре основных режима размещения элементов управления Веб-страницы:
Абсолютное позиционирование (absolutely positioned) – позволяет располагать элементы в точности там, куда их помещает разработчик. При этом элементы управления имеют абсолютное положение на странице.
Относительное позиционирование (relatively positioned) – очень похоже на абсолютное с той разницей, что позиция элемента задается относительно элемента, имеющего статическое расположение на странице.
Статическое позиционирование (statically positioned) – при котором положение элементов управления определяется относительно других элементов управления, размещенных на странице. При этом все элементы располагаются последовательно один за другим.
Без заданного атрибута позиционирования (no positioning attribute) – при котором редактором удаляется любая информация относительно позиционирования элемента управления. При этом используется статическое позиционирование.
Статическое позиционирование рекомендуется использовать в случае, когда расположенный на странице текст чередуется с элементами управления.
При использовании абсолютного и относительного позиционирования Visual Studio добавляет специальные атрибуты, задающие положение элемента. В следующем примере показан фрагмент кода HTML, в котором описывается расположение трех кнопок с разными атрибутами позиционирования [16]:
<asp:Button ID="Button1" runat="server" Style="z-index: 100; left: 436px; position: absolute;top: 187px" Text="Button1" />
<asp:Button ID="Button2" runat="server" Style="left: 245px; position: relative; top: 266px" Text="Button2" />
<asp:Button ID="Button3" runat="server" Style="position: static" Text="Button3" />
Для элемента Button1 использовалось абсолютное позиционирование, для Button2 – относительное, Button3 – статическое (рис. 6.5).
Рис. 6.5. Перегрузка данных и обработка запроса
Для создания пользовательского интерфейса Веб-приложения возможно использование как серверных, так и HTML элементов управления. Доступ к серверным элементам управления возможен из кода приложения, что дает больше возможностей по управлению ими. Однако серверные элементы требуют больше ресурсов, т.к. для них необходимо сохранение значений атрибутов в состоянии вида.
Если сгруппировать HTML и серверные элементы управления, по видам задач программирования, можно получить табл. 6.6 [1, 17].
Таблица 6.6. Группировка HTML и серверных компонент | ||
Задача |
HTML элементы |
Серверные элементы |
Отображение текста |
Input (Text), Textarea |
Label, TextBox, Literal |
Отображение таблиц |
Table |
Table, DataGrid |
Выбор значения из списка |
Select |
DropDownList, ListBox, DataList, Repeater |
Исполнение команд |
Input (Button), Input (Reset), Input (Submit) |
Button, LinkButton, ImageButton |
Установка значений |
Input (CheckBox), Input (Radio) |
CheckBox, CheckBoxList, RadioButton, RadioButtonList |
Отображение графики |
Image |
Image, ImageButton |
Работа с датами |
– |
Calendar |
Демонстрация рекламных изображений |
– |
AdRotator |
Отображение горизонтальной линии |
Horizontal Rule |
Literal |
Получение файлов от клиентов |
Input (File) |
FileUpload |
Сохранение введенных на странице данных |
Input (Hidden) |
ViewState |
Проверка вводимых данных |
Страничные сценарии |
RequiredFildValidator, RangeValidator, RegularExpressionValidator, CompareValidator, CustomValudator, ValidationSummary |