Download - IT Labs Tutorial

Transcript
Page 1: IT Labs Tutorial

Шкурина Г.Л., Щербаков М.В.

ASP.NET – технология

Лабораторный практикум

Волгоград 2007

Page 2: IT Labs Tutorial

УДК 681.

Шкурина Г.Л., Щербаков М.В. ASP.NET – технология.

Лабораторный практикум / ВолгГТУ – Волгоград, 2007 -160с.

В лабораторном практикуме представлены семь лабораторных

работ по технологии ASP.NET. Структура практикума содержит

порядок выполнения лабораторных работ, поставлены задачи

студентам, предложены вопросы для самопроверки, приведена

литература для более углубленного изучения разделов. Лабораторный

практикум имеет мультимедийный вариант исполнения с

приведением экранных форм используемых программных средств.

Пособие предназначено для использования в лабораторных занятиях

по курсу «Информационные технологии» и подобных, а также в

курсовом и дипломном проектировании.

Рецензенты: Кафедра «Проектирования РЭУ» Московского

энергетического института (университета), д-р тех.наук, профессор

А.П.Дармонян.

2

Page 3: IT Labs Tutorial

ВВЕДЕНИЕ

В настоящее время все более актуальным становится вопрос

разработки программного обеспечения, функционирующего в

глобальной сети Интернет. Существуют ряд подходов, связанных с

разработкой веб приложений, различающихся использованием тех

или иных инструментов: веб сервисов, интерпретаторов скриптов,

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

управления базами данных. Одной из таких связок, активно

применяемых в практике разработки приложений для Интернет,

выступает программные средства корпорации Майкрософт. Это такие

продукты как: веб сервис: Microsoft Internet Information Service, среда

исполнения Microsoft .Net Framework, средство разработки Microsoft

Visual Studio 2005 и СУБД Microsoft SQL Server 2005. Выбор данных

продуктов не случаен. Данные продукты являются передовыми среди

инструментов разработки программного обеспечения и кроме этого

Волгоградский государственный технический университет является

участником образовательной программы Microsoft Academic Alliance.

В рамках курса лабораторных работ по дисциплине

информационные технологии студентам предлагается выполнить 7

лабораторных работ, связанных с разработкой веб приложений.

3

Page 4: IT Labs Tutorial

ЛАБОРАТОРНАЯ РАБОТА № 1. УСТАНОВКА И НАСТРОЙКА

ВЕБ СЕРВЕРА IIS, УСТАНОВКА MS VISUAL STUDIO 2005 И MS

SQL SERVER 2005

Цель и задачи лабораторной работы

Цель работы: получение практических навыков развертывания

инфраструктуры для создания Интернет приложений.

Задачи:

1) Установить и настроить Веб- сервер Microsoft Internet

Information Services.

2) Установить инструмент разработки веб приложений Microsoft

Visual Studio 2005 (Version 8) и СУБД Microsoft SQL Server

Express Edition.

3) Создать и запустить веб-узел средствами Microsoft Visual Studio

2005 (WEB Site).

Теоретические положения

Информационные службы Интернет (Internet Information Services,

IIS) упрощают публикацию различных сведений в Интернете или

интрасети [1.1]. В состав IIS входит обширный набор

административных средств управления веб-узлами и веб-сервером.

Используя такие программные средства, как активные серверные

страницы (Active Server Pages, ASP), можно создавать и развертывать

гибкие, масштабируемые веб-приложения. Службы IIS не

устанавливаются по умолчанию, но их можно добавить с помощью

диалогового окна Установка и удаление программ, открываемого на

панели управления.

Принципы работы веб сервера заключает в получении запроса от

браузера клиента, обработки этого запроса с использованием

различных интерпретаторов и возвращение результата запроса

4

Page 5: IT Labs Tutorial

клиенту. Как правило общение с клиентом происходит по протоколу

http.

Microsoft Visual Studio 2005 (Version 8) инструмент разработки

различных приложений, в том числе и веб приложений в среде .NET

Framework.. Определим следующие понятия необходимые для

понимания процесса создания веб приложений в среде .NET

Framework.

.NET Framework представляет новую компьютерную платформу,

упрощающую разработку приложений в распределенной среде

Интернета [1.2]. При разработке .NET Framework учитывались

следующие цели.

• Обеспечение согласованной объектно-ориентированной

среды программирования для локального сохранения и

выполнения кода объектов, для локального выполнения

кода, распределенного в Интернете, либо для удаленного

выполнения.

• Обеспечение среды выполнения кода, минимизирующей

конфликты при развертывании программного обеспечения и

отслеживании версий.

• Обеспечение среды выполнения кода, гарантирующей

безопасное выполнение кода, который создан неизвестным

или не полностью доверенным сторонним изготовителем.

• Обеспечение среды выполнения кода, исключающей

неполадки с производительностью при выполнении

сценариев или интерпретируемого кода.

• Обеспечение согласованности возможностей разработчиков

для разных типов приложений, таких как приложения

Windows и веб-приложения.

5

Page 6: IT Labs Tutorial

• Разработка взаимодействия на основе промышленных

стандартов, которое обеспечивает объединение кода,

разработанного в .NET Framework, с любым другим кодом.

Двумя основными компонентами .NET Framework являются

общеязыковая среда выполнения и библиотека классов .NET

Framework. Основой .NET Framework является общеязыковая среда

выполнения.

Среду выполнения можно считать агентом, который управляет

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

как управление памятью, управление потоками и удаленное

взаимодействие. При этом накладываются условия строгой типизации

и другие виды проверки точности кода, обеспечивающие

безопасность и надежность. Фактически основным принципом среды

выполнения является концепция управления кодом.

Код, который обращается к среде выполнения, называют

управляемым кодом, а код, который не обращается к среде

выполнения, называют неуправляемым кодом.

Процесс управляемого выполнения включает следующие этапы.

1. Выбор компилятора. Чтобы воспользоваться преимуществами

общеязыковой среды выполнения, необходимо использовать

один или несколько языковых компиляторов, обращающихся к

среде выполнения.

2. Компиляция кода в промежуточный язык MSIL. При

компиляции выполняется трансляция исходного кода в

промежуточный язык MSIL и генерация необходимых

метаданных.

3. Компиляция MSIL в машинный код. Во время выполнения

компилятор по требованию (JIT-компилятор) транслирует MSIL

в машинный код. Во время этой компиляции код должен пройти

6

Page 7: IT Labs Tutorial

процесс проверки языка MSIL и метаданных, чтобы определить,

является ли код строго типизированным.

4. Выполнение кода. Общеязыковая среда выполнения

предоставляет инфраструктуру, обеспечивающую выполнение

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

выполнении.

Другой основной компонент .NET Framework, библиотека

классов, представляет полную объектно-ориентированную коллекцию

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

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

командной строки или имеющих интерфейс пользователя

приложений, до приложений, использующих последние

технологические возможности ASP.NET, таких как и веб-службы

XML.

Рисунок 1.1 .NET Framework в контексте

Серверное приложение – приложение, выполняемое на стороне

сервера в управляемой среде. На рисунке 1.2 показана базовая схема

сети с управляемым кодом, который выполняется в среде разных

серверов. Такие серверы, как IIS и SQL Server, могут выполнять

7

Page 8: IT Labs Tutorial

стандартные операции, тогда как логика приложения реализуется

через управляемый код.

Рисунок 1.2 Управляемый код на стороне сервера

ASP.NET является средой размещения, позволяющей

пользователям использовать .NET Framework для обращения к веб-

приложениям. Однако ASP.NET представляет больше, чем просто

размещение во время выполнения. Предоставляется полная

архитектура для разработки веб-узлов и распределенных в Интернете

объектов с помощью управляемого кода. И Web Forms, и веб-службы

XML используют IIS и ASP.NET как механизм публикаций для

приложений; в обоих случаях в .NET Framework имеется коллекция

поддерживающих классов

СУБД Microsoft SQL Server Express Edition – система управления

базами данных предназначена для хранения информации и

манипулирования ей в специальных объектах схемы базы данных.

Для доступа к базам данных из веб приложений ASP.NET

используются специальные классы ADO.NET [1.3].

ADO.NET представляет собой набор классов, предоставляющих

службы доступа к данным. ADO.NET содержит набор компонентов

для создания распределенных приложений. ADO.NET является одной

из составляющих .NET Framework и предоставляет доступ к данным

XML и данным приложения. Классы ADO.NET поддерживают

создание интерфейсов клиентов баз данных и объектов среднего

8

Page 9: IT Labs Tutorial

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

обозревателями.

Во время установки IIS устанавливаются такие необязательные

компоненты, как «Общие файлы», «Документация» и оснастка

«Internet Information Services». Установку этих компонентов можно

отменить, но это может привести к ограничению функциональных

возможностей или выключению служб IIS. Если вы незнакомы с

этими необязательными компонентами и их ролью в работе IIS,

установите IIS с параметрами, предлагаемыми по умолчанию.

Установив IIS, прочитайте раздел «Установка необязательных

компонентов IIS» в электронной документации IIS.

Пример выполнения лабораторной работы

В рамках лабораторной работы необходимо решить следующие

задачи:

1. установить Internet Information Service и настроить его;

2. установить Microsoft Visual Studio и Microsoft SQL Server

2005.

3. создать ASP.NET веб приложение.

Основные шаги Алгоритм решения Установить и

настроить Веб-

сервер

Microsoft

Internet

Information

Services.

Установка IIS,

добавление или

удаление

необязательных

компонент

Нажмите кнопку Пуск,

выберите команду Панель

управления и затем выберите

Установка и удаление программ

Нажмите кнопку Добавление и

удаление компонентов Windows.

Откроется окно мастера

компонентов Windows

9

Page 10: IT Labs Tutorial

Рисунок 1.3 Установка IIS. Следуя появляющимся на

экране инструкциям, установите

IIS, а также удалите или добавьте

компоненты IIS. В результате

установки появится оснастка

Internet Information ServicesСоздание и

настройка

виртуального

каталога

Правой кнопкой мыши

нажать на узел «веб узел по

умолчанию» и выбрать пункт меню

создать - виртуальный каталог.

Откроется окно мастера создания

виртуального каталога.

ii.2 Следуя появляющимся на

экране инструкциям, создайте

каталог с псевдонимом «lab1» и

разместите его на диске

c:\inetpub\wwwroot\lab1. Оставьте

по умолчанию права доступа

(чтение и запуск сценариев).

10

Page 11: IT Labs Tutorial

Запустите блокнот и создайте

текстовый файл с содержанием

<h1>Первое веб приложение</h1>

Сохраните файл в папке

c:\inetpub\wwwroot\lab1 с именем

lab1. asp

Данный файл должен

появится в области содержания в

оснастке IIS для виртуального

каталога lab1

Рисунок 1.4 Содержимое виртуального каталога lab1. Установка

документа по

умолчанию для

виртуального

каталога.

Правой кнопкой мыши

нажмите на узел lab1 и выберите

пункт меню «свойства». В закладке

«Документы» нажмите на кнопку

«Добавить» и введите имя

документа используемого по

умолчанию lab1.asp. Поместите

11

Page 12: IT Labs Tutorial

данный документ первым в списке.Обзор веб

приложения

Правой кнопкой мыши

нажмите на узел lab1 и выберите

пункт меню «Обзор». В правой

части оснастки отобразится

содержимое документа по

умолчанию. Альтернативный

способ обзора приложения:

запустите Internet Explorer и

наберите адрес http://localhost/lab1/.

В окне браузера должно

отобразится следующий текст:

Рисунок 1.5 Обзор виртуального каталога lab1. Настройка

безопасности

IIS

Нажмите кнопку Пуск,

выберите команду Панель

управления, затем

Администрирование и запустите

оснастку Internet Information

Services. В результате откроется

12

Page 13: IT Labs Tutorial

окно оснастки.

Правой кнопкой мыши нажмите

на виртуальный каталог «lab1» и

выберите пункт меню свойства, в

которой выберите закладку

«Безопасность».

Нажмите на кнопку «Изменить»

и во вновь открывшемся окне

уберите флажок «Анонимный

доступ». IIS сообщит вам, что

выбранные параметры проверки

подлинности приведут к отказу в

любом доступе. Что и происходит

при вводе в браузере адреса веб

приложения (рисунок 1.6).

Рисунок 1.6 Отказ при попытке доступа к виртуальному каталогу При установке флажка

«Обычная», при вводе в браузере

адреса веб приложения IIS

13

Page 14: IT Labs Tutorial

запрашивает данные

аутентификации пользователя

(рисунок 1.7).

Рисунок 1.7 Запрос учетных данных пользователя при попытке

доступа к виртуальному каталогу При установке флажка

«Встроенная проверка подлинности

Windows» IIS позволяет получить

доступ к веб приложению,

пользователям, прошедшим

встроенную аутентификацию

Windows (рисунок 1.5)

Данные действия показаны в

файле lab1_1.exe на диске,

прилагаемым к данному пособию.

Установить

инструмент

разработки веб

приложений

Вставьте диск Visual Studio

2005, если срабатывает автозапуск,

то в открывшемся окне выберите

пункт «Install Microsoft Visual

14

Page 15: IT Labs Tutorial

Microsoft

Visual Studio

2005 (Version

8) и СУБД

Microsoft SQL

Server Express

Edition..

Studio 2005». Если автозапуск не

сработал, откройте диск, найдите и

запустите файл Setup.exe.

Снимите флажок «Help Improve

Setup», если нет желания принять

участия в программе Microsoft по

улучшению программы установки.

После загрузки компонентов

(высвечивается надпись «Loading

completed. Click Next to continue»)

перейдите к следующему шагу,

нажав кнопку «Next».

После прочтения лицензионной

информации в окне «End User

License Agreement» поставьте

флажок «I accept the terms of the

License Agreement». Введите ключ

продукта в поле «Product key», имя

пользователя (Ваше имя) в поле

«Name» и перейдите к следующему

шагу, нажав кнопку «Next».

Оставьте флажок напротив

компоненты Visual Web Developer

– необходимо для разработки Web-

сайтов. Снимите флажок напротив

компоненты Visual Basic – этот

язык не будет использоваться при

разработке. Оставьте флажок

напротив компоненты Visual C++ –

15

Page 16: IT Labs Tutorial

этот язык удобно использовать для

разработки Windows приложений,

не использующих .NET Framework.

Оставьте флажок напротив

компоненты Visual C# – это язык

удобно использовать для

разработки Web-приложений и

приложений, использующих .NET

Framework. Снимите флажок

напротив компоненты Visual J# –

этот язык не будет использоваться

при разработке. Снимите флажок

напротив компоненты Smart Device

Programmability – поддержка

программирования карманных

устройств не требуется. Оставьте

флажок напротив компоненты

Microsoft SQL Server 2005 Express

Edition x86, если у Вас не

установлена или не планируется к

установке другая версия SQL

Server – сервера баз данных.

16

Page 17: IT Labs Tutorial

Рисунок 1.8 Экранная форма процесса установки MS Visual Studio

2005В окне Disk Space Requirements

посмотрите свободное дисковое

пространство. В случае

недостаточного пространства (на

диске C: рекомендуется оставлять

не менее 1 Гб) измените путь

установки в графе «Product install

path».

Для начала установки нажмите

кнопу «Install». Ожидайте

произведения установки всех

компонентов, если Visual Studio

2005 устанавливается с нескольких

дисков, то при появлении окна

«Please insert the disk: Microsoft

17

Page 18: IT Labs Tutorial

Visual Studio 2005 Disk …»

измените диск на требуемый и

нажмите кнопку «OK». После

окончания установки на странице

«Finish Page» нажмите «Finish».

Вставьте диск MSDN, если

срабатывает автозапуск, то в

открывшемся окне выберите пункт

«Install Visual Studio

Documentation». Если автозапуск не

сработал, откройте диск, найдите и

запустите файл Setup.exe.

После прочтения лицензионной

информации в окне «End User

License Agreement» выберите пункт

«I accept the terms of the license

agreement». Перейдите к

следующему шагу, нажав кнопу

«Next». Введите имя пользователя

(Ваше имя) в графе «User name»,

название организации в графе

«Organization». Перейдите к

следующему шагу, нажав кнопку

«Next». Выберите пункт «Full

(Recommended)» при наличии

достаточного дискового

пространства Если пространства

недостаточно, то выберите пункт

«Custom» (детальный выбор

18

Page 19: IT Labs Tutorial

компонент документации), или

«Minimum» (минимальный набор

для функционирования

документации).

Перейдите к следующему шагу,

нажимая «Next». Введите путь

установки в графе «Destination

Folder», нажатием «Browse».

Перейдите к следующему шагу,

нажав кнопу «Next».

Если Вы хотите изменить какие-

либо настройки, нажмите кнопку

«Back», чтобы приступить к

установке, нажмите кнопку

«Install».

Ожидайте произведения

установки всех компонентов. После

окончания установки на странице

«Setup Completed» нажмите кнопку

«Finish».

Данные действия показаны в

файле lab1_2.exe на диске,

прилагаемым к данному пособиюСоздать и

запустить веб-

узел

средствами

Microsoft

Visual Studio

2005 (WEB

Запустить Microsoft Visual

Studio 2005.

Для создания нового веб

приложения ( в терминологии

Microsoft Visual Studio 2005 веб

сайта) выберите пункт меню

File/New/Web Site.

19

Page 20: IT Labs Tutorial

Site). Microsoft Visual Studio 2005

предложит вам задать имя веб

сайта и указать путь к нему.

Данный путь можно задать в

файловой системе (File System), т.е.

указать физическое расположение

веб сайта на локальном хосте. Либо

можно указать виртуальный

каталог веб сервера.

Рисунок 1.9 Идентификация создаваемого веб сайта.При удачном соединении с веб

сайтом Microsoft Visual Studio 2005

создаст веб приложение со

страницей по умолчанию

default.aspx. Данная страница

предназначена для размещения

визуальных компонент. Для

выполняемого кода автоматически

20

Page 21: IT Labs Tutorial

для каждой страницы aspx

генерируется страница с таким же

наименованием, но с расшерением

aspx.cs (си шарп). например

Default.aspx.cs.

Разместите на странице

Default.aspx на закладке «Design»

элемент Label и установите его

свойство Text в «Первое веб

приложение».

Установите для данного

виртуального каталога lab1

встроенную политику безопасности

Windows в оснастке IIS.

Запустите приложение в режиме

отладки (Debug). Microsoft Visual

Studio 2005 выдаст сообщение

«Страница не может быть запущена

в режиме отладки, т.к. отсутствует

соответствующий

конфигурационный файл» (The

page cannot be running in debug

mode because debugging is not

enabled in the Web.config file. What

would you like to do? ). Выберите

пункт «Add new Web.config file»

(создать новый Web.config файл) и

нажмите кнопку «Ок»

Microsoft Visual Studio 2005

21

Page 22: IT Labs Tutorial

запустит Internet Explorer с

результатами работы веб

приложения.

Рисунок 1.10 Результат работы веб сайта.

Задание на выполнение лабораторной работы

Каждый студент должен развернуть IIS на персональном

компьютере и создать веб приложение, отображающее информацию о

произвольном предприятии на не менее 5 страницах, ссылающихся

друг на друга.

Контрольные вопросы

1. Какие продукты Microsoft необходимы для развертывания веб

сервера и веб приложения.

22

Page 23: IT Labs Tutorial

2. Что такое .NET Framework? Цели создания .NET Framework

3. Что такое среда выполнения .NET Framework?

4. Дайте определение управляемого и неуправляемого кода

5. Охарактеризуйте процесс управляемого выполнения и его

этапы.

6. Охарактеризуйте библиотеку классов .NET Framework.

7. Что такое серверное приложение?

8. Охарактеризуйте технологию ASP.NET.

9. Что такое Microsoft SQL Server Express Edition?

10.Что такое ADO.NET?

11.Опишите основные шаги установки и настройки безопасности

IIS.

12. Какие параметры проверки подлинности существуют в IIS?

13.Опишите основные шаги установки Microsoft Visual Studio

2005.

14.Опишите основные шаги создания веб сайта средствами

Microsoft Visual Studio 2005.

23

Page 24: IT Labs Tutorial

ЛАБОРАТОРНАЯ РАБОТА № 2. РАЗРАБОТКА ВЕБ

ПРИЛОЖЕНИЯ С ИСПОЛЬЗОВАНИЕМ ТЕХНОЛОГИИ

ASP.NET

Цель и задачи лабораторной работы

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

веб приложений и реализации обмена информацией между

страницами.

Задачи:

1) Создать и запустить веб-узел средствами Microsoft Visual Studio

2005 (WEB Site), включающий несколько страниц (веб - форм).

2) Реализовать функции в соответствии с заданием в веб

приложении на языке C#.

3) Изучить способ передачи информации между страницами с

использованием переменных сессии.

Теоретические положения

ASP.NET Общие вопросы создания приложений. ASP.NET является

единой платформой для разработки веб-приложений, которая

содержит службы, необходимые для создания веб-приложений для

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

это позволяет использовать новую модель программирования, с

помощью которой можно создать новый мощный класс приложений.

ASP.NET является частью .NET Framework и позволяет в полной мере

использовать возможности общеязыковой среды выполнения

(например, строгая типизация, наследование, взаимодействие языков

и отслеживание версий).

Приложение ASP.NET — это совокупность исполняемого кода,

всех файлов, страниц, дескрипторов и модулей, которые могут быть

вызваны из виртуальной папки и ее подпапок на сервере веб-

24

Page 25: IT Labs Tutorial

приложений. В приложении может быть использована любая модель

программирования ASP.NET, основанная на веб-формах или веб-

службах XML. Они должны располагаться в одной виртуальной

папке.

Серверные элементы управления ASP.NET — это компоненты,

которые запускаются на сервере и инкапсулируют функции

интерфейса пользователя и другие связанные с этим функции. Они

используются на страницах ASP.NET и в классах кода страниц

ASP.NET. В данном разделе содержится вводная информация и

примеры, которые могут помочь в разработке собственных серверных

элементов управления ASP.NET.

Термины «страница ASP.NET» и «страница веб-форм»,

встречающиеся в документации, являются полностью

взаимозаменяемыми.

Серверные элементы управления ASP.NET являются

производными от System.Web.UI.Control (напрямую или косвенно).

Данный базовый класс относится к пространству имен System.Web.UI,

содержащему общие элементы всех серверных элементов управления

ASP.NET. Как правило, используются три элемента управления,

принадлежащие System.Web.UI: Page, UserControl и LiteralControl. В

то время как Page является весьма важным элементом, так как любая

страница ASP.NET компилируется структурой ASP.NET в элемент

управления Page, разработчики элементов управления обычно не

создают экземпляров Page и не наследуют от Page. Разработчики

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

Пользовательские элементы управления разрабатываются с помощью

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

сохраняются в виде текстовых файлов .ascx. Разработчики элементов

25

Page 26: IT Labs Tutorial

управления широко используют LiteralControl, так как он позволяет

инкапсулировать текст в элемент управления.

Серверные элементы управления ASP.NET, содержащие интерфейс

пользователя, организуются в два пространства имен:

System.Web.UI.HtmlControls и System.Web.UI.WebControls. Серверные

HTML-элементы управления соотносятся с элементами HTML, в то

время как элементы управления веб-сервера более функциональны и

абстрактны.

В отличие от событий в приложениях для настольных систем,

события серверных элементов управления ASP.NET порождаются и

обрабатываются на сервере. Когда веб-запрос передает серверу

информацию о некотором действии на стороне клиента, элемент

управления может порождать события на сервере в ответ на действие

клиента. Событие обрабатывается страницей или ее дочерними

элементами управления, и ASP.NET посылает ответ обратно клиенту.

Это вызывает у пользователя впечатление работы с приложением для

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

должны понимать, что только одно событие клиентской стороны

отправляется на сервер — событие обратного запроса. Обычные

события, связанные с пользовательским интерфейсом, такие как

щелчки мышью или нажатия клавиш, не отправляются на сервер и,

таким образом, не могут быть обработаны на сервере.

Базовый класс System.Web.UI.Control предоставляет события,

управляющие циклом выполнения элемента управления, например

инициализацией, загрузкой и выгрузкой.

Управление состояниями ASP.NET Понятие «состояние

приложения» включает в себя все данные, влияющие на работу

программы, например папки, корзины заказов, сообщения

пользователей и счетчики посещений. Управление состояниями

26

Page 27: IT Labs Tutorial

может быть осложнено тем, что создателям приложений,

разрабатывающим основанные на состояниях решения, доступно

множество шаблонов, типов данных и методов доступа.

В ASP.NET содержатся простые средства управления

состояниями сеансов и приложений, совместимые с интерфейсами

программирования .NET Framework, которые знакомы разработчикам,

использовавшим ASP.

Сведения в приложении могут предоставляться с помощью

класса HttpApplicationState, доступ к которому обычно

осуществляется через свойство Application объекта HttpContext. Этот

класс предоставляет другим приложениям словарь ключей и значений

объектов, который можно использовать для хранения объектов .NET

Framework и переменных, связанных с множеством веб-запросов от

клиентов.

Общие сведения о состоянии приложения

Приложение ASP.NET представляет собой набор файлов, кода,

страниц, дескрипторов и модулей, расположенных в виртуальной

папке и ее подпапках, которые пользователь может запрашивать через

иерархию папки. Например, приложение, вычисляющее прибыль от

инвестиций, можно опубликовать на веб-сервере в папке с именем

\Invest. Эта папка может иметь следующую структуру подпапок:

\Invest

\bin

\image

\xml

Экземпляр класса HttpApplicationState создается после первого

запроса URL-ресурса из пространства имен виртуальной папки

приложения. Экземпляр класса создается, таким образом, для каждого

приложения, хранящегося на компьютере. Доступ к экземпляру класса

27

Page 28: IT Labs Tutorial

осуществляется с помощью свойства Application объекта HttpContext.

Все объекты HttpModules и HttpHandlers, например страницы

ASP.NET, имеют доступ к экземпляру контекста и, следовательно,

доступ к свойству Application во время обработки веб-запроса.

В ASP.NET существует следующая поддержка состояния

приложения:

Простое в использовании средство работы с состоянием,

совместимое с ранними версиями ASP и интерфейсами

программирования .NET Framework, работающее со всеми языками,

поддерживаемыми платформой .NET.

Словарь состояний приложения, доступный всем дескрипторам

запросов, вызываемым приложением. В отличие от IIS и ранних

версий ASP, где доступ к состоянию приложения имели только

страницы, в ASP.NET все экземпляры классов IHttpHandler и

IHttpModule могут хранить и получать доступ к глобальным

переменным словаря.

Простая и интуитивно понятная система синхронизации,

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

переменным, хранящимся в состоянии приложения.

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

запущенного в контексте приложения-источника. Переменные

недоступны из других приложений, выполняемых в системе.

Обычно к состоянию приложения обращаются с помощью

свойства Application объекта Page.

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

приложения являются глобальными для приложения ASP.NET. При

работе с состоянием приложения следует учитывать все последствия

хранения данных в глобальных переменных.

28

Page 29: IT Labs Tutorial

Особенно важно учитывать следующие аспекты: Затраты памяти

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

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

замене переменной, в отличие от веб-страниц, ресурсы которых

освобождаются после обработки запроса. В состоянии приложения не

следует хранить большой объем редко используемых данных. Для

этого лучше использовать кэш ASP.NET.

Влияние хранения данных в состоянии приложения на жизненный

цикл. Домены приложений .NET Framework и узлы процессов во

время выполнения приложения могут быть в любой момент

уничтожены из-за обновления кодов, ошибок, запланированных

перезапусков процессов и т. п. Данные, хранящиеся в состоянии

приложения, удаляются после уничтожения хранящего их хоста. Для

защиты состояния приложения его следует хранить в базе данных или

другом надежном хранилище.

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

ASP.NET содержит необходимую приложениям инфраструктуру

данных состояния сеанса, позволяющую выполнять следующие

действия:

• Автоматически определять и классифицировать запросы,

приходящие от одного клиента, по логическим сеансам

приложения на сервере.

• Хранить данные с ограниченной областью действия на

сервере для применения в нескольких запросах

обозревателей.

Создавать соответствующие события управления жизненным

циклом сессии (Session_OnStart, Session_OnEnd и т. д.),

обрабатываемые в коде приложения.

Общие сведения о состоянии сеанса

29

Page 30: IT Labs Tutorial

Протокол HTTP не сохраняет состояний, то есть невозможно

определить, исходит ли последовательность запросов от одного

клиента и просматривается ли страница или веб-узел обозревателем.

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

веб-приложений, сохраняющих данные между запросами (например,

программы, хранящей заказы пользователя).

Поддержка сессий в ASP.NET обеспечивается за счет следующих

средств:

• Средство для работы с состоянием сеанса просто в

использовании, знакомо разработчикам ASP, совместимо с

интерфейсами программирования .NET Framework.

• Надежное средство для работы с состоянием сеанса гарантирует,

что при перезагрузке IIS или рабочего процесса данные состояния

сеанса не будут утеряны.

• Масштабируемое средство для работы с состоянием сеанса может

быть использовано при работе с веб-фермами и веб-садами, оно

позволяет выделить веб-приложению больше процессоров и

повысить масштабируемость приложения.

• Средство для работы с состояниями сеанса обеспечивает

поддержку обозревателей, не использующих файлы cookie.

• По пропускной способности средство эквивалентно средствам

ASP или превосходит их в основных сценариях.

Однако состояние различно для разных веб-приложений. Если веб-

приложение переключается на другое приложение во время

выполнения, данные сеанса не доступны во втором приложении.

Идентификация сеанса

30

Page 31: IT Labs Tutorial

Каждый активный сеанс ASP.NET имеет идентификатор,

представляющий собой 120-разрядную строку SessionID, состоящую

из допустимых в URL-адресах знаков ASCII. Алгоритм генерации

значений SessionID гарантирует уникальность (во избежание

совпадений идентификаторов сеансов) и случайность

(злоумышленник не сможет воспользоваться значением SessionID для

вычисления значения другого идентификатора).

В зависимости от параметров приложения строка SessionID

передается между сервером и клиентом посредством файлов cookie

или с помощью включения значения SessionID в URL-адрес.

Хранение состояние сеанса

Простая и удобная в использовании модель состояния сеанса

ASP.NET позволяет хранить временные данные и объекты различных

веб-запросов. Для хранения служит внутренний кэш ссылок для

объектов, основанный на словаре и используемый в процессе IIS. При

работе с внутренним состоянием сеанса учитывайте следующие

ограничения.

• При работе с внутренним состоянием сеанса данные сеанса

удаляются после перезагрузки aspnet_wp.exe или домена

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

случаях.

• Атрибут элемента <processModel> в файле Web.config

приложения вызывает запуск нового процесса при

выполнении определенного условия, например memoryLimit.

• Изменение файла Global.asax или Web.config.

• Изменение в папке \Bin веб-приложения.

31

Page 32: IT Labs Tutorial

• Антивирусная программа вносит изменения в файлы

Global.asax, Web.config или файлы в папке \Bin.

• Не используйте внутреннее состояние сеанса, если в элементе

<processModel> файла Web.config включен режим веб-сада. В

противном случае может произойти непредсказуемая потеря

данных.

При работе с внешним состоянием сеанса сервер состояния .NET

хранит данные состояния в памяти. В этом режиме рабочий процесс

обращается напрямую к серверу состояния. В режиме SQL состояние

сеанса хранится в базе данных SQL Server, и рабочий процесс

напрямую взаимодействует с SQL. Преимущество службы хранения

можно использовать с помощью сериализации и сохранения всех

объектов коллекции Session клиента после обработки запроса. При

повторном посещении сервера эти объекты получаются

соответствующим рабочим процессом ASP.NET от сервера состояний

в виде двоичных потоков, которые после десериализации помещаются

в новую коллекцию Session, предоставленную обработчику запроса.

В режиме SQL состояние сеанса может работать в антисбойном

кластере. Такой кластер представляет собой два (или больше)

идентичных резервных сервера, хранящих данные сеанса в базе

данных SQL на отдельном компьютере.

Разделение хранилища данных сеанса и использующих его

приложений позволяет получить значительные преимущества,

недоступные в ранних версиях ASP:

• Восстановление после сбоев приложения (для хранения состояния

сеанса не используется память рабочего процесса ASP.NET).

32

Page 33: IT Labs Tutorial

Поскольку состояние сеанса хранится отдельно от рабочих

процессов, оно не будет утеряно при сбое, возникшем из-за отказа

в доступе, или перезагрузке, произведенной IIS при

взаимоблокировке или утечке памяти.

• Разделение приложения на несколько рабочих процессов.

Так как сведения сеанса хранятся отдельно от рабочих

процессов, приложение можно разделить на несколько процессов.

Разделение может повысить производительность и

масштабируемость приложения на многопроцессорных

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

с отдельным компьютером, возможно избежать блокировок

процессов — одного из слабых мест ранних версий архитектуры

ASP.

• Разделение приложения между несколькими компьютерами веб-

фермы.

Так как сведения сеанса хранятся отдельно от рабочих процессов,

приложение можно разделить на несколько процессов, работающих

на разных компьютерах. Модель передачи состояния сеанса между

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

отдельном компьютере, аналогична взаимодействию процессов и

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

должен приходиться один сервер состояния.

Конфигурация и запуск состояния сеанса. В ASP.NET доступны

три режима состояния сеанса: внутренний, сервер состояния и SQL-

сервер. Независимо от выбора режима основные параметры

конфигурации совпадают.

33

Page 34: IT Labs Tutorial

Состояние сеанса настраивается в два этапа. Во-первых, в HTTP-

запрос внедряется модуль состояния сеанса.

В следующем примере демонстрируется образец содержимого

файла Machine.config. Чтобы файл конфигурации работал правильно,

следует указать полное имя соответствующей версии сборки

System.Web.SessionState.SessionStateModule. Обычно, это версия,

связанная с версией .NET Framework, используемой приложением. С

<httpmodules>

...

<!-- You must supply a valid fully qualified assembly name here. -->

<!-- For this example to work correctly, the version number for -->

<!-- the referenced assemby must match the version installed on -->

<!-- your computer by the .NET Framework. -->

<add name="sessionState"

type="System.Web.SessionState.SessionStateModule,

Version=1.0.3300.0,Culture=neutral,PublicKeyToken=b77a5c561934e089

" />

...

</httpmodules>

Задайте атрибуты служб состояния сеанса в зависимости от

режима состояния сеанса в элементе конфигурации <sessionState>.

Передача между страницами значений серверного элемента

управления

При создании приложения Web Forms часто требуется передать

данные от одной страницы Web Forms к другой. Это позволяет

34

Page 35: IT Labs Tutorial

странице Web Forms обрабатывать данные, введенные на другой

странице.

Шаблоны разработки различаются при использовании

внутреннего кода и файлов кода страниц. Выбор шаблона зависит от

предпочтений в работе с внутренним кодом и файлами кода страниц.

Разработка с использованием внутреннего кода

При передаче значений страниц Web Forms с помощью

внутреннего кода следует указать имя класса страницы Web Forms,

содержащей передаваемые данные. Чтобы указать имя класса

страницы, включите в директиву @ Page атрибут ClassName с именем

класса. Для каждого значения класса, которое требуется передать,

создайте свойство с методом доступа get. Метод доступа get должен

возвращать передаваемое значение, например текст в поле ввода.

Чтобы отправить данные, передайте управления приложением другой

странице Web Forms вызовом метода Transfer объекта Server.

В коде принимающей страницы Web Forms создайте ссылку на код

страницы, отправляющей данные, добавив директиву @ Reference в

начало страницы, при этом значение атрибута Page задайте равным

имени отправляющей страницы. Для доступа к данным на

принимающей странице получите экземпляр обработчика, первым

получившего HTTP-запрос с помощью свойства Handler объекта

HttpContext. Объект-обработчик преобразуется в экземпляр класса,

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

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

получившегося объекта.

35

Page 36: IT Labs Tutorial

Пример выполнения лабораторной работы

Задание. Необходимо разработать веб приложение, реализующее

функцию калькулятора двух чисел для четырех операций: сложения,

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

имя пользователя и результат выводить на странице результатов. В

случае деления на ноль, приложение должно выдавать

соответствующее сообщение.

Основные шаги Алгоритм решения Создание

нового веб

приложения и

создание веб

форм

приложения.

Создание

нового веб

приложения

Добавьте в веб сайт новую веб

форму. Для этого выберите пункт

меню File/new/file и выберите

создание новой веб формы

(рисунок 4.1).

Рисунок 2.1.Создание нового элемента веб формыДанная веб форма

автоматически добавится в

обозреватель проекта (Solution

36

Page 37: IT Labs Tutorial

Explorer) (рисунок 4.2)

Рисунок 2.2.Обозреватель проекта.Для каждой страницы

выделено две области: область для

визуального программирования

(Design) и отображения html кода

(рисунок 4.3).

Рисунок 2.3.Области визуального программированияПри добавлении визуального

компонента в область Design

автоматически генерируется html

код. И наоборот, при

формировании html кода элемента

управления, в области Design

формируется визуальное

отображение элемента управления.

Все элементы управления

находятся на закладке

37

Page 38: IT Labs Tutorial

инструментов (ToolBox),

включающий в себя следующие

группы: стандартные элементы,

элементы для работы с данными,

элементы проверки правильности и

полноты ввода информации,

элементы навигации, элементы

аутентификации пользователя и

основные элементы управления

html.

Рисунок 2.4.Закладка инструментов.Добавьте

элементы

управления для

ввода

Для выполнения работы будем

использовать закладку визуального

программирования. Для

размещения элементов управления

на страницу необходимо

«зацепить» элемент управления

мышью и «перетащить» на

страницу. Для решения

поставленной задачи поместите

элемент управления метка (Label)

на веб – форму. В области свойств

(Properties) и обработки событий

38

Page 39: IT Labs Tutorial

(Events Handlers) (рисунок 4.5)

измените свойства «Id» и «Text» на

следующие Id = lbName и Text

«Ваше имя».

Рисунок 2.5.Область свойств и обработчиков событий.Поместите элемент ввода

TextBox и измените его свойство Id

= tbName. Данный элемент

предназначен для ввода имени

пользователя.

Поместите элемент

управления метка и измените его

свойства Id = lblFirstNumeric, Text

«Первое число».

Поместите элемент ввода

39

Page 40: IT Labs Tutorial

TextBox и измените его свойства Id

= tbFN Данный элемент

предназначен для ввода первого

числа.

Поместите элемент

выпадающего списка

DropDownList и измените его

свойства Id = «ddlOperation».

Данный элемент предназначен для

выбора операции над числами.

Нажмите левой кнопкой мыши по

элементу выпадающего списка и

Visual Studio отобразит список

задач для DropDownList

(DropDownList Tasks). Выберите

задачу настройки элементов

выпадающего списка (Edit Items).

Добавьте элементы

соответствующие операциям над

числами: сложению, вычитанию,

умножению и делению. Для этого

нажмите кнопку добавить и

измените свойства Text и Value для

каждого элемента. В свойстве Text

укажите обозначение операции, а в

свойстве Value укажите код

операции. Например для сложения:

Text = «+», Value = 1 (рисунок 4.6).

40

Page 41: IT Labs Tutorial

Рисунок 2.6.Настройка свойств для DropDownListПоместите элемент

управления метка и измените его

свойства Id = lblSecondNumeric,

Text «Второе число».

Поместите элемент ввода

TextBox и измените его свойство Id

= tbSN. Данный элемент

предназначен для ввода второго

числа.

Поместите элемент

управления кнопка (Button) и

измените свойства Id =

«btCalculate», Text = «Вычислить».

При нажатии на данную кнопку

веб приложение должно рассчитать

41

Page 42: IT Labs Tutorial

результат математической

операции над числами и вывести

результат на другой странице.

В результате страница в

режиме визуального

программирования должно

выглядеть как на рисунке 4.7.

Рисунок 2.7.Результат создания элементов управления на веб

форму.Два раза кликните кнопкой

мыши на кнопке btCalculate.

Автоматически сгенерируется

метод

protected void

btCalculate_Click(object sender,

EventArgs e)

{

}

После переключения на

область Source можно увидеть,

Microsoft Visual Studio

сгенерировал код в области Source:

42

Page 43: IT Labs Tutorial

<%@ Page Language="C#" AutoEventWireup="true"

CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">

<title>Untitled Page</title>

</head>

<body>

<form id="form1" runat="server">

<div>

<asp:Label ID="lbName" runat="server" Text="Ваше

имя"></asp:Label>

<asp:TextBox ID="tbName" runat="server"></asp:TextBox><br />

<asp:Label ID="lblFirstNumeric" runat="server" Text="Первое

число"></asp:Label>

<asp:TextBox ID="tbFN" runat="server"

Width="80px"></asp:TextBox>

<asp:DropDownList ID="ddlOperation" runat="server">

<asp:ListItem Value="1">+</asp:ListItem>

<asp:ListItem Value="2">-</asp:ListItem>

<asp:ListItem Value="3">*</asp:ListItem>

<asp:ListItem Value="4">/</asp:ListItem>

</asp:DropDownList>

<asp:Label ID="lblSecondNumeric" runat="server" Text="Второе

число"></asp:Label>

43

Page 44: IT Labs Tutorial

<asp:TextBox ID="tbSN" runat="server"></asp:TextBox>&nbsp;

<asp:Button ID="btCalculate" runat="server"

OnClick="btCalculate_Click" Text="Вычислить" /></div>

</form>

</body>

</html>

Отметим, что все элементы формируются и методы выполняются

на стороне сервера (runat="server"). Добавление в

переменную

сессии строку,

введенную в

элемент ввода

имени

пользователя и

метод

переадресации

на страницу

"~/Default2.asp

x"

Добавьте в метод

btCalculate_Click код:

protected void

btCalculate_Click(object sender,

EventArgs e)

{

Session["user_name"] =

tbName.Text.ToString();

Response.Redirect("~/Default2.as

px");

}

В данном методе создали

переменную сессии под названием

user_name и присвоили ей значение

введенного в элемент управления

tbName. Далее выполняется

переход на страницу Default2.aspx.

Создайте

вторую

страницу и

выведите на

На второй странице

(Default2.aspx) в методе Page_Load

укажите следующий код:

public partial class Default2 :

44

Page 45: IT Labs Tutorial

ней значение

переменной

сессии.

System.Web.UI.Page

{

protected void Page_Load(object

sender, EventArgs e)

{

Response.Write("Здравствуйте,

" + Session["user_name"].ToString());

}

В данном методе отображается

значение переменной сессии на

вторую веб - форму.

Запустите

приложение

После запуска приложения

запустится первая страница на

которой введите имя пользователя

и нажмите на кнопку (рисунок 4.8).

45

Page 46: IT Labs Tutorial

Рисунок 2.8.Первая страница приложения.Введите имя пользователя и

нажмите на кнопку.

После нажатия на кнопку

запустится вторая страница, на

которой отобразится введенное имя

пользователя (рисунок 4.9).

46

Page 47: IT Labs Tutorial

Рисунок 2.9.Вторая страница приложения.Реализуйте

элементы

ввода двух

чисел и

операции

обработки.

Приступим к реализации

калькулятора. Добавьте в метод

btCalculate_Click страницы

Default1.aspx следующий код

protected void btCalculate_Click(object sender, EventArgs e)

{

int i;

double a = 0, b = 0, c = 0;

Session["user_name"] = tbName.Text.ToString();

Session["current_error"] = 0;

a = double.Parse(tbFN.Text.ToString());

b = double.Parse(tbSN.Text.ToString());

47

Page 48: IT Labs Tutorial

i = int.Parse(ddlOperation.SelectedValue.ToString());

switch (i)

{

case 1:

c = a + b;

break;

case 2:

c = a - b;

break;

case 3:

c = a * b;

break;

case 4:

if (b != 0)

{

c = a / b;

}

else

{

Session["current_error"] = 1;

c = -1;

}

break;

default:

break;

}

Session["result"] = c;

//переходим на вторую страницу

48

Page 49: IT Labs Tutorial

Response.Redirect("~/Default2.aspx");

}

Добавьте в метод Page_Load

страницы Default2.aspx следующий

код

protected void Page_Load(object sender, EventArgs e)

{

Response.Write("Здравствуйте, " +

Session["user_name"].ToString());

if (int.Parse(Session["current_error"].ToString()) == 1)

{

Response.Write("Произошла ошибка деления на 0");

}

else

{

Response.Write("Результат = " + Session["result"].ToString());

}

}Результат работы приложения

показан на рисунке 4.10

49

Page 50: IT Labs Tutorial

Рисунок 2.10.Выполнение приложения.Вычислите

результат.

После нажатия на кнопку

загрузится вторая страница с

результатом.

50

Page 51: IT Labs Tutorial

Рисунок 2.11.Результат выполнения операции.Если указать в качестве

делителя 0 (рисунок 4.12), то в

результате приложение отобразит

предупреждение об ошибке

(рисунок 4.13).

51

Page 52: IT Labs Tutorial

Рисунок 2.12.Условия деления на ноль

Рисунок 2.13.Результат выполнения операции деления

Задания на выполнение лабораторной работы

Разработайте прикладной веб сайт, удовлетворяющий

следующим троебованиям:

52

Page 53: IT Labs Tutorial

1. не менее пяти веб форм, связанных между собой

гиперссылками.

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

включая элементы ввода информации;

3. не менее 5 методов обработки событий для каждой веб

страницы;

4. Реализовать механизм передачи информации меду

страницами с использованием переменной сессии.

Контрольные вопросы

1. Особенности создания приложений с использованием языка

C#.

2. Охарактеризуйте процесс создания ASP.NET приложения.

3. Назовите способы передачи информации между веб

формами в ASP.NET приложении.

4. Назовите основные методы для отображения информации

на веб форме.

5. Дайте определение пространству имен.

6. Использование переменных сессии для передачи данных

между формами.

7. Что означает свойство элемента управления runat="server"?

8. Каким образом вывести информацию на веб форму?

9. Какие основные элементы управления используются для

ввода / вывода информации?

10. Назовите основные группы элементов управления в Visual

Studio.

11.Охарактеризуйте серверные элементы управления.

12. Понятие состояния приложения.

13.Состояние сеанса, сессии.

53

Page 54: IT Labs Tutorial

14.Каким образом используется SQL сервер для хранения

переменных сессии?

54

Page 55: IT Labs Tutorial

ЛАБОРАТОРНАЯ РАБОТА № 3. ПУБЛИКАЦИЯ ДАННЫХ В

ВЕБ. ЧАСТЬ 1

Цель и задачи лабораторной работы

Цель работы: получение практических навыков создания базы

данных СУБД Microsoft SQL Server Express посредством Microsoft

Visual Studio 2005 (Version 8) и получения информации из таблиц

базы данных в веб приложении.

5. Создать проект веб сайта.

6. Создать базу данных, таблицы базы данных согласно заданию и

наполнить таблицы информацией.

7. Создать объект SQLDataSource и настроить его на получение

информации из связанных таблиц.

8. Реализовать метод получения данных из таблиц и отображения

их на странице веб сайта.

Теоретические положения

Для выполнения данной лабораторной работы вам необходимо

ознакомится с методикой создания баз данных, базовыми

спецификациями языка SQL и описанием компонентов

SQLDataSource и GridView.

Язык SQL, предназначенный для взаимодействия с базами

данных, появился в середине 70-х гг. (первые публикации датируются

1974 г.) и был разработан в компании IBM в рамках проекта

экспериментальной реляционной СУБД System R [Кузнецов].

Исходное название языка SEQUEL (Structured English Query Language)

только частично отражало суть этого языка. Конечно, язык был

ориентирован главным образом на удобную и понятную

пользователям формулировку запросов к реляционным БД. Но, в

55

Page 56: IT Labs Tutorial

действительности, он почти с самого начала являлся полным языком

БД, обеспечивающим помимо средств формулирования запросов и

манипулирования БД следующие возможности:

• средства определения и манипулирования схемой БД;

• средства определения ограничений целостности и триггеров;

• средства определения представлений БД;

• средства определения структур физического уровня,

поддерживающих эффективное выполнение запросов;

• средства авторизации доступа к отношениям и их полям1);

• средства определения точек сохранения транзакции, и

выполнения фиксации и откатов транзакций.

В языке отсутствовали средства явной синхронизации доступа к

объектам БД со стороны параллельно выполняемых транзакций: с

самого начала предполагалось, что необходимую синхронизацию

неявно выполняет СУБД.

В настоящее время язык SQL реализован во всех коммерческих

реляционных СУБД и почти во всех СУБД, которые изначально

основывались не на реляционном подходе. Все компании-

производители провозглашают соответствие своей реализации

стандарту SQL, и на самом деле реализованные диалекты SQL очень

близки.

SQL Server 2000 представляет собой современную,

высокомасштабируемую реляционную СУБД для хранения данных.

СУБД хранит информацию в реляционных таблицах. Каждая таблица

(table) представляет собой некоторый объект предметной области,

например оборудование, сотрудники или покупатели. Каждая таблица

включает в себя столбцы (columns) которые представляют собой

атрибуты объекта представляемого таблицей (например размер, имя,

стоимость и проч.) и строки являющиеся конкретными значениями

56

Page 57: IT Labs Tutorial

атрибутов. Приложения могут сформировать СУБД запрос в виде

выражения на языке SQL (Structured Query Language), и СУБД

возвратит результат выполнения запроса в виде таблицы данных.

Диалект языка SQL поддерживаемый SQL Server называется Transact-

SQL.

Архитектура базы данных . Microsoft SQL Server 2000 хранит

данные в базах данных (databases). Данные в базе данных

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

База данных имеет физическую реализацию в виде двух или более

файлов данных на диске.

Когда осуществляется работа с базой данной, в первую очередь

пользователь работает с логическими компонентами такими как

таблицы (tables), представления (views), процедуры (procedures) и

пользователи (users). Физическая реализация файлов более прозрачна.

Обычно только администраторы базы данных непосредственно

работают с физическими файлами.

Каждый экземпляр (instance) SQL Server имеет 4 системные

таблицы (master, model, tempdb, и msdb) и одну или более одной

базы данных, определенной пользователем (пользовательские БД).

Некоторые организации имеют только одну пользовательскую БД,

содержащую всю необходимую для этой организации информацию.

Некоторые организации имеют несколько различных баз данных свою

для каждого приложения либо для подразделений организаций. Кроме

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

так и к нескольким базам данных.

Нет необходимости запускать несколько копий экземпляров SQL

Server для обработки многопользовательских запросов к базам данных

сервера. Каждый экземпляр SQL Server Standard или Enterprise Edition

имеет возможность одновременной обработки нескольких тысяч

57

Page 58: IT Labs Tutorial

запросов пользователей. Каждый экземпляр SQL Server делает

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

если у пользователей есть соответствующие разрешения.

Когда происходит соединение с экземпляром SQL Server ваше

соединение автоматически ассоциируется с определенной базой

данных на сервере. Эта база данных называется текущей (current

database). Обычно соединение осуществляется с той базой данных,

которая установлена для пользователя как база данных для

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

указать имя базы данных, с которой желаете установить соединение

средствами API.

Кроме этого вы можете изменить текущее соединение с базой

данных используя выражение Transact-SQL USE database_name или

другие операторы API.

SQL Server 2000 позволяет прервать соединение с экземпляром

SQL Server и установить соединение с другим экземпляром SQL

Server. Кроме этого вы можете указать SQL Server осуществить

присоединение базы данных к файлам данных другой базы данных.

Для доступа к данным из ASP.NET приложения используются

поставщики данных. Поставщик данных .NET Framework

используется в качестве моста между приложением и источником

данных. Поставщик данных применяется для извлечения данных из

источника данных и возврата измененных данных в источник.

В следующей таблице перечислены поставщики данных .NET

Framework, включенные в .NET Framework.

Поставщик данных .NET

Framework ОписаниеПоставщик данных NET

Framework для SQL Server

Для Microsoft® SQL Server™ 7.0 и более

поздних версий.

58

Page 59: IT Labs Tutorial

Поставщик данных NET

Framework для OLE DB

Для источников данных, доступных

средствами OLE DB.Поставщик данных .NET

Framework для ODBC

Для источников данных, доступных

средствами ODBC.

Примечание. Поставщик данных .NET

Framework для ODBC не входит в состав

.NET Framework версии 1.0. Если при

работе с .NET Framework версии 1.0

требуется поставщик данных .NET

Framework для ODBC, его можно

загрузить с узла

http://msdn.microsoft.com/downloads.

Пространство имен для загружаемого

поставщика данных .NET Framework для

ODBC — Microsoft.Data.Odbc.Поставщик данных .NET

Framework для Oracle

Для источников данных Oracle.

Поставщик данных .NET Framework для

Oracle поддерживает клиентское

программное обеспечение Oracle версии

8.1.7 и выше.

Примечание. Поставщик данных .NET

Framework для Oracle не входит в состав

.NET Framework версии 1.0. Если при

работе с .NET Framework версии 1.0

требуется поставщик данных .NET

Framework для Oracle, его можно

загрузить с узла

http://msdn.microsoft.com/downloads.

59

Page 60: IT Labs Tutorial

Объекты Connection, Command, DataReader и DataAdapter

представляют основные элементы модели поставщика данных .NET

Framework. Описание этих объектов приведено в следующей таблице.

Объект ОписаниеConnection Устанавливает подключение к указанному источнику

данных.Command Выполняет команду в отношении источника данных.DataReader Считывает доступный только для чтения

однонаправленный (только в прямом направлении) поток

данных из источника данных.DataAdapter Заполняет DataSet и переносит обновления в источник

данных.Наряду с основными классами, перечисленными в таблице выше,

поставщик данных .NET Framework содержит и другие классы,

которые перечислены в следующей таблице.

Объект ОписаниеTransaction Позволяет включать команды в транзакции над

источником данных.CommandBuilder Вспомогательный объект, который будет

автоматически создавать свойства команд

DataAdapter или извлекать сведения о параметрах из

хранимой процедуры и заполнять ими коллекцию

Parameters объекта Command.Parameter Определяет входные, выходные и возвращаемые

параметры для команд и хранимых процедур.Exception Возвращается при возникновении ошибки в

источнике данных. Для ошибок, возникающих в

клиенте, поставщик данных .NET Framework создает

исключение .NET Framework.Error Извлекает данные из предупреждения или ошибки,

60

Page 61: IT Labs Tutorial

возвращаемых источником данных.ClientPermission Предоставляет поставщику данных .NET Framework

атрибуты безопасности доступа к коду.

Пример выполнения лабораторной работы

Задание. В качестве исходных данных выступает структура базы

данных показанная на рисунке 3.1

Groupsi_id_group

vc_name

Registersi_id_register

i_id_student

i_id_subject

d_date

i_mark

Studentsi_id_student

vc_name

i_id_group

Subjectsi_id_subject

vc_name

Рисунок 3.1 Структура базы данных.

где таблицы имеют следующую структуру:

Таблица студентов Students

№ п/п Имя поля Тип

данных

Описание

1. i_id_student bigint Первичный ключ таблицы

Is Identity = YES

Identity Increment = 1

Identity Seed = 1

61

Page 62: IT Labs Tutorial

2. vc_name varchar(50) Фамилия, имя отчество

студента3. i_id_group bigint Внешний ключ. Ссылка на

записи таблицы Groups

Таблица групп Groups

№ п/п Имя поля Тип

данных

Описание

1. i_id_group bigint Первичный ключ таблицы

Is Identity = YES

Identity Increment = 1

Identity Seed = 1

2. vc_name varchar(12) Название группы

Таблица дисциплин Subjects

№ п/п Имя поля Тип

данных

Описание

1. i_id_subject bigint Первичный ключ таблицы

Is Identity = YES

Identity Increment = 1

Identity Seed = 1

2. vc_name varchar(50) Название дисциплины

Таблица ведомости студентов Registers

№ п/п Имя поля Тип

данных

Описание

1. i_id_register bigint Первичный ключ таблицы

Is Identity = YES

Identity Increment = 1

62

Page 63: IT Labs Tutorial

Identity Seed = 1

2. i_id_student bigint Внешний ключ. Ссылка на

записи таблицы Students3. i_id_subject bigint Внешний ключ. Ссылка на

записи таблицы Subjects4. d_date datetime Дата и время получения

оценки по дисциплине5. i_mark int Оценка по дисциплине.

Необходимо в веб приложении вывести ведомость успеваемости

студентов в виде:

Студент Группа Предмет Оценка Дата сдачиИванов

ИванAB

Информационные

технологии5

01.09.2006

0:00:00Иванов

ИванAB

Проектирование

информационных систем4

02.09.2006

0:00:00Петрова

МарияAB

Информационные

технологии4

01.09.2006

0:00:00

Основные шаги Алгоритм решения Создать проект

веб сайта

Действия по созданию веб сайта

подробно рассматривались в

лабораторной работе № 1. Задайте

имя веб сайту lab3Создать базу

данных,

таблицы базы

данных

согласно

заданию и

наполнить

Отобразите

панель

обозревателя

SQL серверов

Отобразите панель

обозревателя SQL серверов. Для

этого выберите пункт меню

View/Server Explorer.

63

Page 64: IT Labs Tutorial

таблицы

информациейСоздайте новую

базу данных с

именем labs

Правой кнопкой мыши нажмите

на верхний узел обозревателя SQL

серверов и выберите пункт меню

создания новой базы данных

«Create New SQL Server Database».

В появившемся окошке заполните

имя сервера localhost (при условии,

что Microsoft SQL Server 2005

установлен на локальной машине),

выберите SQL Server Authentication

и укажите имя и пароль для

доступа к базе данных. (по

умолчанию вводится имя

пользователя «sa» и пароль

указанный для данного

пользователя в процессе установки

Microsoft SQL Server 2005).

Укажите имя базы данных labs.

64

Page 65: IT Labs Tutorial

Рисунок 3.2 Окно создания базы данных.Microsoft SQL Server 2005

автоматически создаст новое

подключение (Data Connection) с

названием gebeus.labs.dbo (в

данном случае gebeus имя SQL

сервера).

Создайте

таблицы

согласно

заданию

Разверните ветвь созданного

подключения и кликните правой

кнопкой мыши на ветви Tables.

Выберите пункт меню добавления

новой таблицы «Add New Table».

Задайте поля таблицы «Студенты»

в соответствии с заданием. Для

поля i_id_student установите

признак первичного ключа. Для

этого кликните правой кнопкой

мыши на строке поля i_id_student и

65

Page 66: IT Labs Tutorial

выберите пункт меню установки

первичного ключа «Set Primary

Key». Также для этого поля

зададим правило автоинкремента

значения. Для этого в области

свойств столбца (Column

Properties) в области Identity

Specification укажите значения

свойств Is Identity = YES, Identity

Increment = 1, Identity Seed = 1.

Создайте таблицы групп,

предметов и ведомости

аналогичным образом.Создайте связи

между

таблицами

После создания таблиц

необходимо установить связи

между ними. Для этого

необходимо выбрать пункт

Relationship в главном меню Table

Designer, предварительно выбрав

таблицу, содержащую внешний

ключ, например таблицу студенты.

В появившемся окне нажать

кнопку Add и нажать кнопку

выбора для свойства «Tables and

Columns Specification». В

появившемся окне выбрать

таблицу, на которую ссылается

внешний ключ (i_id_group), т.е.

Primart Key Table = Groups, поле

первичного ключа i_id_group и в

66

Page 67: IT Labs Tutorial

секции таблицы, содержащей

внешний ключ (указано название

выбранной таблицы, т.е. Students)

выберите также поле i_id_group.

Таким образов у вас должно

получится результат показанный

на рисунке 3.3

Рисунок 3.3 Создание связи между таблицами.Повторите аналогичные

действия для всех внешних ключей

таблиц базы данных.Постройте

диаграмму для

проверки

правильности

создания базы

данных

Для проверки правильности

задания связей постройте

диаграмму базы данных. Для этого

кликните правой кнопкой мыши на

ветвь Database Diagram и выберите

пункт меню создания новой

диаграммы Add New Diagram. В

появившемся окне выберите все

67

Page 68: IT Labs Tutorial

таблицы. После создания

диаграммы она должна совпадать

со структурой изображенной на

рисунке 3.1.Заполните

таблицы

указанными

ниже данными

Для заполнения таблиц

данными кликните правой кнопкой

мыши на ветвь желаемой таблицы

и выберите пункт меню

отображения данных таблицы

Show Table Data. В появившемся

окне заполните данными таблицы.

Так для таблицы студентов укажем

следующую информацию:

i_id_student vc_name i_id_group1 Иванов Иван 12 Петрова Мария 13 Сидоров Василий 24 Федорова Екатерина 25 Прохоров Константин 3для групп:

i_id_group vc_name1 AB2 BC3 CD4 DEдля предметов

i_id_subject vc_name1 Информационные технологии2 Проектирование информационных системдля ведомости

i_id_register i_id_student i_id_subject d_date i_mark1 1 1 01.09.2006 5

68

Page 69: IT Labs Tutorial

0:00:00

2 1 202.09.2006

0:00:004

3 2 101.09.2006

0:00:004

Создать объект

SQLDataSource

и настроить его

на получение

информации из

связанных

таблиц

Создайте и

настройте

компонент

SQLDataSource

Создайте SQLDataSource

поместив иконку объекта с панели

инструментов на страницу.

Выберите мастер

конфигурирования SQLDataSource

щелнув на ссылку Configure Data

Source.

На первом шаге работы мастера

выберите объект соединения к базе

данных (labsConnectionString) и

нажмите кнопку «Next». На втором

шаге выберите способ получения

данных из базы данных «Specify a

custom SQL statement or stored

procedure» и нажмите кнопку

«Next». На третьем шаге нажмите

кнопку «Query Builder» и добавьте

все таблицы из предложенных.

Выберите поля показанные на

рисунке 3.4 и Microsoft Visual

Studio 2005 автоматически

сформирует запрос. Кроме этого на

69

Page 70: IT Labs Tutorial

рисунке 3.4 указаны псевдонимы

для полей.

Рисунок 3.4 Настройка запроса SQLDataSource.Настройте свойства

SQLDataSource, ID = dsRegister,

DataSourceMode = DataReader.Реализуйте

метод

получения

данных из

таблиц и

отображения их

на странице веб

сайта

i.1 Создайте объект html

таблицы на странице Default.aspx.

Для этого в закладке Source после

тегов

<form id="form1" runat="server">

70

Page 71: IT Labs Tutorial

<div>

объявите создание таблицы следующем образом:

<table id="TableViewRegister" runat="server" >

<tr>

<th>Студент</th>

<th>Группа</th>

<th>Предмет</th>

<th>Оценка</th>

<th>Дата сдачи</th>

</tr>

</table>

В методе IsPostBack укажите

следующий код вывода

информации на страницу веб

приложения. //сделаем выборку данных

IDataReader reader = (IDataReader) dsRegister.Select(new

DataSourceSelectArguments());

try

{

//Поэлементно заносим в строку row

//текущую строку результата запроса к БД

while (reader.Read())

{

HtmlTableRow row = new HtmlTableRow();

HtmlTableCell cell;

cell = new HtmlTableCell();

cell.InnerText = reader["StudentName"].ToString();

row.Cells.Add(cell);

71

Page 72: IT Labs Tutorial

TableViewRegister.Rows.Add(row);

cell = new HtmlTableCell();

cell.InnerText = reader["GroupName"].ToString();

row.Cells.Add(cell);

TableViewRegister.Rows.Add(row);

cell = new HtmlTableCell();

cell.InnerText = reader["SubjectName"].ToString();

row.Cells.Add(cell);

TableViewRegister.Rows.Add(row);

cell = new HtmlTableCell();

cell.InnerText = reader["Mark"].ToString();

row.Cells.Add(cell);

TableViewRegister.Rows.Add(row);

cell = new HtmlTableCell();

cell.InnerText = reader["Date"].ToString();

row.Cells.Add(cell);

TableViewRegister.Rows.Add(row);

}

}

finally

{

//в любом случае закрываем объект reader

reader.Close();

}

}

72

Page 73: IT Labs Tutorial

Результат выполнения показан

на рисунке 3.5

Рисунок 3.5 Результат работы веб приложения.Задания на выполнение лабораторной работы

Выполните следующие задания:

1. Создайте базу данных со структурой таблиц указанной для

соответствующего варианта.

2. Заполните таблицы не менее 15 записями.

3. Создайте веб сайт с веб формами: для каждой таблицы создайте

отдельную веб форму, на которой отобразите содержимое

таблицы.

Вариант 1.

73

Page 74: IT Labs Tutorial

Рис 3.6 Схема данных для варианта № 1.

Структура таблиц

Таблица подразделений tbDepartments

п/п

Наименование

поля

Тип Примечание

1. i_id_department Int Primary key;

Identity = Yes,

Identity seed = 1,

Identity Increment = 1 2. vc_name Varchar(50) Not Null,

Default value =

‘Подразделение’

Таблица оборудования tbTools

74

Page 75: IT Labs Tutorial

п/п

Наименование

поля

Тип Примечание

1. i_id_tool Int Primary key;

Identity = Yes,

Identity seed = 1,

Identity Increment = 1 2. vc_name Varchar(50)3. i_id_manuf Int Внешний ключ,

ссылка на таблицу

tbManufactured4. i_id_mark Int Внешний ключ,

ссылка на таблицу

tbMarks

Таблица ответственных за оборудование tbPersons

п/п

Наименование

поля

Тип Примечание

1. i_id_person Int Primary key;

Identity = Yes,

Identity seed = 1,

Identity Increment = 1 2. vc_name Varchar(100)

Таблица изготовителей оборудования tbManufactured

п/п

Наименование

поля

Тип Примечание

1. i_id_manuf Int Primary key;

Identity = Yes,

Identity seed = 1,

Identity Increment = 1 2. vc_name Varchar(100) Not null3. vc_country Varchar(50) Not null default =

“Россия”

75

Page 76: IT Labs Tutorial

Таблица марок оборудования tbMarks

п/п

Наименование

поля

Тип Примечание

1. i_id_mark Int Primary key;

Identity = Yes,

Identity seed = 1,

Identity Increment = 1 2. vc_name Varchar(100) Not null

Таблица списка оборудования в подразделении tbLists

п/п

Наименование

поля

Тип Примечание

1. i_id_list Int Primary key;

Identity = Yes,

Identity seed = 1,

Identity Increment = 1 2. i_id_tool Int Внешний ключ,

ссылка на таблицу

tbTools3. i_id_department Int Внешний ключ,

ссылка на таблицу

tbDepartments4. i_count Int Not null, default = 0

Количество

оборудования

Таблица списка оборудования, закрепленного за ответственным

tbPersonLists

п/п

Наименование

поля

Тип Примечание

1. i_id_personlist int Primary key;

76

Page 77: IT Labs Tutorial

Identity = Yes,

Identity seed = 1,

Identity Increment = 1 2. i_id_person int Внешний ключ,

ссылка на таблицу

tbPersons3. i_id_tool int Внешний ключ,

ссылка на таблицу

tbTools4. i_count int Not null, default = 0

Количество

оборудования

Вариант № 2.

Рис Схема данных для варианта № 2.

Структура таблиц

Таблица типов клиент tbTypes

№ Наименование Тип Примечание

77

Page 78: IT Labs Tutorial

п/п поля 1. i_id_type Int Primary key;

Identity = Yes,

Identity seed = 1,

Identity Increment = 1 2. vc_name Varchar(50) Not Null,

Default value =

‘Основной’

Таблица клиентов tbClients

п/п

Наименование

поля

Тип Примечание

1. i_id_client Int Primary key;

Identity = Yes,

Identity seed = 1,

Identity Increment = 1 2. vc_name Varchar(50) Not Null,

Default value =

‘Неизвестный’3. i_id_type int Внешний ключ,

ссылка на таблицу

tbTypes

Таблица продавцов tbSellers

п/п

Наименование

поля

Тип Примечание

1. i_id_seller Int Primary key;

Identity = Yes,

Identity seed = 1,

Identity Increment = 1 2. vc_name Varchar(50) Not Null,

Default value =

78

Page 79: IT Labs Tutorial

‘Иванов Иван

Иванович’

Таблица групп товаров tbGroups

п/п

Наименование

поля

Тип Примечание

1. i_id_group Int Primary key;

Identity = Yes,

Identity seed = 1,

Identity Increment = 1 2. vc_name Varchar(50)

Таблица товаров tbGoods

п/п

Наименование

поля

Тип Примечание

1. i_id_good Int Primary key;

Identity = Yes,

Identity seed = 1,

Identity Increment = 1 2. vc_name Varchar(50) Not Null,

Default value =

('Товар')3. i_id_group int Внешний ключ,

ссылка на таблицу

tbGroups4. m_price money Not Null,

Default value =

0.00

Таблица шапки документов «заказы» tbOrder

п/п

Наименование

поля

Тип Примечание

79

Page 80: IT Labs Tutorial

1. i_id_order Int Primary key;

Identity = Yes,

Identity seed = 1,

Identity Increment = 1 2. d_date datetime Not Null3. i_id_seller int Внешний ключ,

ссылка на таблицу

tbSellers4. i_id_client int Внешний ключ,

ссылка на таблицу

tbClients

Таблица табличной части документа «заказы» tbOrderDetail

п/п

Наименование

поля

Тип Примечание

1. i_id_orderdetail Int Primary key;

Identity = Yes,

Identity seed = 1,

Identity Increment = 1 2. i_id_order int Внешний ключ,

ссылка на таблицу

tbOrders3. i_id_good int Внешний ключ,

ссылка на таблицу

tbGoods4. f_count float количество5. m_price money цена6. m_sum money сумма

80

Page 81: IT Labs Tutorial

Контрольные вопросы

1. Охарактеризуйте алгоритм создания веб приложения,

предназначенного для отображения данных из SQL базы

данных.

2. Охарактеризуйте процесс создания базы данных и таблиц с

использованием Microsoft Visual Studio.

3. Объект SQLDataSource основные свойства и методы.

4. Охарактеризуйте процесс настройки подключения объекта

SQLDataSource к базе данных.

5. Работа с построителем запросов Query Builder.

6. Что такое строка соединения (Connection String)? Из каких

основных компонент она состоит?

7. Назовите три основных свойства объекта SQLDataSource.

8. Дайте характеристику элемент отображения данных GridView

(основные свойства и методы).

9. Каким образом настроить компонент GridView на отображение

данных?

81

Page 82: IT Labs Tutorial

ЛАБОРАТОРНАЯ РАБОТА № 4. ПУБЛИКАЦИЯ ДАННЫХ В

ВЕБ. ЧАСТЬ 2

Цель и задачи лабораторной работы

Цель: получить практические навыки добавления,

редактирования и удаления данных из веб приложения с

использованием компонент SQLDataSource и GridView.

Задачи.

1. Создать базу данных из 3-х связанных таблиц

произвольной предметной области.

2. Осуществить подключение к базе данных с

использованием компонент SQLDataSource.

3. Отобразить данные с помощью объекта класса GridView.

4. Реализовать метод добавления данных в таблицу базы

данных.

5. Реализовать метод корректировки данных в таблице базы

данных непосредственно в объекте класса GridView.

6. Реализовать метод удаления данных из таблицу базы

данных.

Теоретические положения

Класс SqlDataSource позволяет вам использовать Web control для

доступа к данным, размещенным в базе данных SQL. Вы можете

использовать SqlDataSource с другими элементами управления,

отображающими данные, такие как GridView и DetailsView, для

отображения и манипулирования данными из веб форм, при этом вам

не придется писать много кода, или вовсе обойтись без него. Вы

можете использовать SqlDataSource control с любыми СУБД, для

82

Page 83: IT Labs Tutorial

которых есть провайдер данных ADO.NET, таких как SQL Server,

Oracle, и другие ODBC и OLE DB СУБД

SqlDataSource наследует функциональность ADO.NET,

требуемую для взаимодействия с БД. Это означает, что вы сможете

просто осуществлять доступ и манипуляцию данными из веб форм без

прямого использования классов ADO.NET. Вы формируете строку

соединения с соединением с вашей БД и SQL выражение которое

работает с необходимыми данными, а SqlDataSource автоматически

открывает и закрывает соединение с и выполняет выражение SQL во

время выполнения программы.

Вы конфигурируете SqlDataSource на извлечение данных подобно

DataReader или DataSet. Data readers выполняется быстрее , но читает

данные только c начала до конца и в режиме «только для чтения».

Необходимо использовать данный элемент управления в режиме

DataReader, тогда когда вы хотите привязать и отобразить ваши

данные в простых сценариях, например, в drop-down list.

Использование элемента управления в режиме DataSet необходимо,

когда вам требуется отражать связи в данных и операции, которые

требуется хранить в памяти (например сортировка , фильтрация),

тогда необходимо использовать элемент управления GridView.

Существуют различные способы манипуляции с данными из веб

форм. Вы можете использовать элемент управления SqlDataSource для

выборки данных из БД используя запрос SQL. может работать с

СУБД, которые ассоциированые с провайдером ADO.NET, такие как

Microsoft SQL Server, Oracle, ODBC СУБД, или OLE DB СУБД такие

как которые Microsoft Access.

Основные свойства и методы объектов SqlDataSource и GridView

смотрите в MSDN.

83

Page 84: IT Labs Tutorial

Пример выполнения лабораторной работы

Задание. В качестве исходных данных выступает структура базы

данных показанная на рисунке 4.1, где таблицы имеют следующую

структуру:

Таблица программных проектов tbTasks

№ п/п Имя поля Тип

данных

Описание

4. i_id_tasks bigint Первичный ключ таблицы

Is Identity = YES

Identity Increment = 1

Identity Seed = 1

5. vc_name varchar(50) Наименование проекта

Таблица ошибок tbBugs

№ п/п Имя поля Тип

данных

Описание

1. i_id_bugs bigint Первичный ключ таблицы

Is Identity = YES

Identity Increment = 1

Identity Seed = 1

2. vc_name varchar(50) Наименование проекта

Таблица, хранящая информацию об ошибках в программном проекте

tbDocs

№ п/п Имя поля Тип

данных

Описание

1. i_id_docs bigint Первичный ключ таблицы

Is Identity = YES

Identity Increment = 1

84

Page 85: IT Labs Tutorial

Identity Seed = 1

2. d_date datetime Дата время обнаружения

ошибки в проекте3. i_id_task bigint Внешний ключ. Ссылка на

записи таблицы tbTasks4. i_id_bugs bigint Внешний ключ. Ссылка на

записи таблицы tbBugs5. vc_comments varchar(50) Комментарии

Рисунок 4.1 Структура базы данных «lab4»

Необходимо в веб приложении вывести таблицу, хранящую

информацию об ошибках в программном проекте в виде:

85

Page 86: IT Labs Tutorial

Рисунок 4.2 Способ представления информации в веб приложении.и реализовать методы добавления новой строки, редактирование

строки в GridView и удаления строки.

Основные шаги Алгоритм решения Создание и

наполнение

базы данных

Создание базы

данных lab4

средствами

Microsoft Visual

Studio 2005

Отобразите панель

обозревателя SQL серверов. Для

этого выберите пункт меню

View/Server Explorer.

Правой кнопкой мыши нажмите

на верхний узел обозревателя SQL

серверов и выберите пункт меню

создания новой базы данных

«Create New SQL Server Database».

В появившемся окошке заполните

имя сервера localhost (при условии,

что Microsoft SQL Server 2005

установлен на локальной машине),

выберите SQL Server Authentication

и укажите имя и пароль для

доступа к базе данных. (по

86

Page 87: IT Labs Tutorial

умолчанию вводится имя

пользователя «sa» и пароль

указанный для данного

пользователя в процессе установки

Microsoft SQL Server 2005).

Укажите имя базы данных lab4.

Microsoft SQL Server 2005

автоматически создаст новое

подключение (Data Connection) с

названием gebeus.labs.dbo (в

данном случае gebeus имя SQL

сервера).Создайте

таблицы

описанные в

задании

Создайте таблицы описанные в

задании, аналогичным образом,

описанным в 3 й лабораторной

работе.Создайте связи

между

таблицами

После создания таблиц создайте

связи между ними, аналогичным

образом, описанным в 3 й

лабораторной работе.Создайте

диаграмму для

проверки

правильности

работы

Для проверки правильности

задания связей постройте

диаграмму базы данных и сравните

ее с диаграммой, представленной

на рисунке 4.1

Заполните созданные таблицы информацией Так для таблицы

tbBugs

i_id_bugs vc_name1 Не открывается форма2 Не формируется отчет

87

Page 88: IT Labs Tutorial

3 Вылетает системная ошибкатаблицы tbTasks

i_id_tasks vc_name1 Тестовый пример 12 Тестовый пример 23 Тестовый пример 3

Таблицы tbDocs

i_id_docs d_date i_id_tasks i_id_bugs vc_comments1 17.02.2006 0:00:00 1 1 первый баг2 17.02.2006 0:00:00 2 2 второй баг

Создание веб

сайта ASP.NET

приложения

Создайте новый

веб сайт с

именем lab4

Выберите создание нового веб

сайта и выберите язык C# и задаем

имя lab4 (рисунок 4.3)

Рисунок 4.3 Создание нового Web siteСоздание

объектов

SQLDataSource

Создайте 3

объекта класса

SQLDataSource

для

Для доступа к данным

потребуется 3 объекта класса

SQLDataSource. Элемент

управления находится на панели

88

Page 89: IT Labs Tutorial

отображения

данных таблиц.

инструментов «Data» (рисунок 4.4).

Рисунок 4.4 Раздел Data панели инструментовПеретащите три элемента

управления SQLDataSource на

форму приложения и задайте им

свойства «ID»: «dsBugs»,

«dsTasks», «dsDocs» для

соответствующих таблиц (рисунок

4.5).

Рисунок 4.5 Созданные элементы SQLDataSourceОсуществите настройку объекта

SQLDataSource с помощью мастера

настройки (рисунок 4.6)

89

Page 90: IT Labs Tutorial

Рисунок 4.6 Мастер настройки свойств SQLDataSourceНастройте

источник

данных

SQLDataSource

для таблицы

tbTasks .

Создайте новое соединение и

проверьте его корректность.

В качестве имени сервера

укажите сервер, на котором

установлен MS SQL Server.

Введите имя и пароль для

доступа к серверу и проверьте

корректность соединения нажав на

кнопку «Test Connection».

Рисунок 4.7 Новое соединение с базой данных.

90

Page 91: IT Labs Tutorial

Далее сохраните настройку

соединения (рисунок 4.8)

Рисунок 4.8 Сохранение строки соединенияСформируйте строку запроса

(для таблицы tbTasks) (рисунок 4.9)

91

Page 92: IT Labs Tutorial

Рисунок 4.9 Формирование строки запроса к таблице.Проверьте результатов

выполнения запроса. Должен

получится результат показанный

на рисунке 4.10.

92

Page 93: IT Labs Tutorial

Рисунок 4.10. Результаты запроса.Настройте

источник

данных

SQLDataSource

для таблицы

tbBugs .

Сконфигурируйте

аналогичным образом dsBugs,

используя уже созданную строку

соединения. Создавать новую

строку соединения не нужно.

Настройте

источник

данных

SQLDataSource

для таблицы

tbDocs с

использованием

построителя

запросов Query

Для настройки объекта dsDocs

воспользуйтесь построителем

запросов (Query Builder). Для этого

выберите пункт «Specify a custom

SQL statement or stored procedure»,

как показано на следующем

рисунке 4.11:

93

Page 94: IT Labs Tutorial

Builder .

Рисунок 4.11 Выбор способа задания строки выборки данных.Далее укажите, что

необходимо использовать Query

Builder

94

Page 95: IT Labs Tutorial

Рисунок 4.12 Вызов Query BuilderСформируйте запрос для

таблицы tbDocs

95

Page 96: IT Labs Tutorial

Рисунок 4.13 Формирование запроса данных из таблицы tbDocsДля каждого из объектов

SQLDataSource проверьте наличие

значений для следующих свойств

(здесь указаны примерные

значения)

Свойство Описание Пример значенияID Уникальный

идентификатор

объекта

dsDocs

ConnectionString Строка

соединения с базой

Data

Source=ROOT;Initial

96

Page 97: IT Labs Tutorial

данных Catalog=test_4;User

ID=sa;Password=sa»

DataSourceMode =

«DataSetProviderName Тип

провайдера с базой

данных. Для

доступа к MS SQL

используется.

Значение

устанавливается по

умолчанию.

System.Data.SqlClien

t

Установите с помощью

построителя запроса значения

следующих свойств:

Свойство Описание ЗначенияInsertQuery Строка запроса на

добавление новой

строки в источник

данных

INSERT INTO

tbDocs(d_date, i_id_tasks,

i_id_bugs, vc_comments)

VALUES (@p_d_date,

@p_i_id_tasks,

@p_i_id_bugs,

@p_vc_comments)UpdateQuery Строка запроса на

обновление записи в

источнике данных

UPDATE tbDocs SET

d_date = @p_d_date,

i_id_tasks =

@p_i_id_tasks, i_id_bugs =

@p_i_id_bugs,

vc_comments =

97

Page 98: IT Labs Tutorial

@p_vc_comments

WHERE i_id_docs =

@p_i_id_docsDeleteQuery Строка запроса на

удаление записи в

источнике данных

DELETE FROM

tbDocs WHERE (d_date =

@p_i_id_doc)

Отметим, что переменная с

префиксом @ является

параметром, которые будет

задаватся в коде.Создайте

объект

GridView и

настройте его

на

SQLDataSource

dsDocs

Создайте объект GridView. C

закладки ToolBox/Data

«перетащите» объект GridView на

форму.

Рисунок 4.13 Объект GridViewДалее осуществите настройку

GridView с использованием

98

Page 99: IT Labs Tutorial

мастера. В свойстве DataSource

укажите dsDocs. В GridView

автоматически отобразятся все

поля:

Рисунок 4.14 Объект GridView связанный с даннымы.Осуществите

настройку

колонок

GridView

Осуществите настройку

колонок GridView. Оставте все

колонки данных (Bounded Fields)

без изменения, а для колонок

TaskName и BugName осуществите

их конвертацию в шаблонные

типы. Это необходимо для того

чтобы иметь возможность

настроить шаблоны этих полей для

осуществления редактирования.

Поля шаблоны будут помечены

специальной иконкой.

99

Page 100: IT Labs Tutorial

Рисунок 4.15 Определение полей шаблонов.Добавьте

командные

колонки

(Command

Fields): «Edit,

Update, Cancel»

и «Delete».

Добавьте следующие

командные колонки (Command

Fields): «Edit, Update, Cancel» и

«Delete». Они будут

предназначены для осуществления

редактирования и удаления.

Осуществи

те настройку

шаблонов для

полей

TaskName и

BugName.

Осуществите настройку

шаблонов для полей TaskName и

BugName образом, показанным на

рисунке 4.16.

100

Page 101: IT Labs Tutorial

Рисунок 4.16 Настройка шаблонов.Для того чтобы при

редактировании строки в столбе

выбора задачи появился

выпадающий список, необходимо в

поле шаблона EditItem Template

вместо объекта TextBox поместить

объект DropDownList и настроить

его.

Рисунок 4.17 Настройка объекта DropDownList. Unbound означает, что

данный объект не связан с источником данных.

101

Page 102: IT Labs Tutorial

Вначале выберите в качестве

источника данных объект dsTasks

Рисунок 4.18 Привязка объекта DropDownList к источнику

данных.Далее отредактируйте

привязку к данным источника для

объекта GridView

102

Page 103: IT Labs Tutorial

Рисунок 4.19 Привязка к данным источника объекта GridView.

Привяжите выбранное значение SelectedValue источника данных

связанного с таблицей tbTasks к значению идентификатора i_id_tasks

источника данных связанного с таблицей tbDocsАналогичным образом

осуществите настройку шаблона

поля BugsName.

Реализуйте

добавление

новой строки в

таблицу

Для добавления новой строки

сформируйте соответствующие

элементы управления для каждого

из полей: TextBox – «tbData»,

DropDownList «ddlTasks»,

DropDownList «ddlBugs», TextBox

– «tbComments». И добавим объект

LinkButton «lbNewRecord».

При запуске приложения

должно появится следующее:

(рисунок 4.20)

103

Page 104: IT Labs Tutorial

Рисунок 4.20 Новые объекты приложения.Напишите обработку на

нажатие объекта lbNewRecord в

методе обработки нажатия

добавьте значения полей в таблицу.

Код добавления новой записи

следующий:

protected void lbNewRecord_Click(object sender, EventArgs e)

{

//добавление новой записи.

String tmp;

//очищаем список парамеров для добавления новой строки

InsertParameters

dsDocs.InsertParameters.Clear();

//список параметров: @p_d_date, @p_i_id_tasks,

@p_vc_comments, @p_i_id_bugs

//устанавливаем значения параметров из элементов

104

Page 105: IT Labs Tutorial

управления.

//получаем значение из элемента управления.

// в данном случае из TextBox'a

tmp = tbData.Text.ToString();

//создаем объект класса Parameter который передаем в

список параметров

//класса SqlDataSource

dsDocs.InsertParameters.Add(new Parameter("p_d_date",

TypeCode.DateTime, tmp));

tmp = ddlTasks.SelectedValue.ToString();

dsDocs.InsertParameters.Add(new Parameter("p_i_id_tasks",

TypeCode.Int32, tmp));

tmp = ddlBugs.SelectedValue.ToString();

dsDocs.InsertParameters.Add(new Parameter("p_i_id_bugs",

TypeCode.Int32, tmp));

tmp = tbComments.Text.ToString();

dsDocs.InsertParameters.Add(new

Parameter("p_vc_comments", TypeCode.String, tmp));

//выполняем метод добавления

dsDocs.Insert();

}

}

Получается соответствующий

результат:

105

Page 106: IT Labs Tutorial

Рисунок 4.21 Новые объекты приложения.Реализуйте

возможность

редактирования

строки в

таблице

. Для редактирования строки

таблицы напишите код метода

RowUpdating объекта GridView

protected void GridView1_RowUpdating(object sender,

GridViewUpdateEventArgs e)

{

//Редактирование строки

String tmp;

//очищаем список параметров

dsDocs.UpdateParameters.Clear();

//получаем идентификатор строки

int index = GridView1.EditIndex;

GridViewRow row = GridView1.Rows[index];

tmp = row.Cells[0].Text.ToString();

dsDocs.UpdateParameters.Add(new Parameter("p_i_id_docs",

106

Page 107: IT Labs Tutorial

TypeCode.Int32, tmp));

if (e.NewValues["d_date"] != null)

tmp = e.NewValues["d_date"].ToString();

else

tmp = row.Cells[1].Text.ToString();

dsDocs.UpdateParameters.Add(new Parameter("p_d_date",

TypeCode.DateTime, tmp));

if (e.NewValues["i_id_tasks"] != null)

tmp = e.NewValues["i_id_tasks"].ToString();

else

tmp = row.Cells[2].Text.ToString();

dsDocs.UpdateParameters.Add(new Parameter("p_i_id_tasks",

TypeCode.Int32, tmp));

if (e.NewValues["i_id_bugs"] != null)

tmp = e.NewValues["i_id_bugs"].ToString();

else

tmp = row.Cells[3].Text.ToString();

dsDocs.UpdateParameters.Add(new Parameter("p_i_id_bugs",

TypeCode.Int32, tmp));

if (e.NewValues["vc_comments"] != null)

tmp = e.NewValues["vc_comments"].ToString();

else

tmp = row.Cells[3].Text.ToString();

dsDocs.UpdateParameters.Add(new

Parameter("p_vc_comments", TypeCode.String, tmp));

107

Page 108: IT Labs Tutorial

//обновляем

dsDocs.Update();

}

При нажатии на ссылку «Edit»

GridView переходит в режим

редактирования:

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

результат.

108

Page 109: IT Labs Tutorial

Рисунок 4.23 Результат режима редактирования.Реализуйте

возможность

удаления

строки из

таблицы

Реализация возможности

удаления строки в таблице. Для

удаления строки таблицы

напишите код метода RowDeleting

объекта GridView

protected void GridView1_RowDeleting(object sender,

GridViewDeleteEventArgs e)

{

//удаление строки

//очищаем список параметров

dsDocs.DeleteParameters.Clear();

String tmp;

//получаем идентификатор строки

int index = e.RowIndex;

GridViewRow row = GridView1.Rows[index];

tmp = row.Cells[0].Text.ToString();

109

Page 110: IT Labs Tutorial

dsDocs.DeleteParameters.Add(new Parameter("p_i_id_docs",

TypeCode.Int32, tmp));

dsDocs.Delete();

}Результат работы показан на

рисунке 4.24.

Рисунок 4.24 Результат режима удаления строки. Удалили первую

строку.

Задания на выполнение лабораторной работы

В рамках лабораторной работы требуется доработать веб сайт

созданный в лабораторной работе № 3. Требуется реализовать в

каждой из веб форм возможности добавления новой строки в таблицу,

редактирования таблицы из компонента GridView и удаления записи

из таблицы.

110

Page 111: IT Labs Tutorial

Контрольные вопросы

1. Объект SQLDataSource основные свойства и методы.

2. Охарактеризуйте процесс настройки подключения объекта

SQLDataSource к базе данных.

3. Работа с построителем запросов Query Builder.

4. Что такое строка соединения (Connection String)? Из каких

основных компонент она состоит?

5. Назовите три основных свойства объекта SQLDataSource.

6. Дайте характеристику элемент отображения данных GridView

(основные свойства и методы).

7. Каким образом настраивается компонент GridView для

реализации процедуры изменения данных?

111

Page 112: IT Labs Tutorial

ЛАБОРАТОРНАЯ РАБОТА № 5. ИСПОЛЬЗОВАНИЕ

ХРАНИМЫХ ПРОЦЕДУР В ВЕБ ПРИЛОЖЕНИЯХ

Цель и задачи лабораторной работы

Цель работы: получение практических навыков создания

хранимых процедур на MS SQL Server и реализации вызов процедур

из ASP.NET приложения.

Задачи:

1) Создать базу данных согласно заданию.

2) Реализовать не менее 3-х хранимых процедур, согласно

заданию.

3) Создать ASP.NET приложение, в котором осуществить вызов

хранимых процедур.

Теоретические положения

Хранимые процедуры обеспечивают множество преимуществ для

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

хранимых процедур операции базы данных могут быть

инкапсулированы в одну команду, оптимизированы для достижения

максимальной производительности и улучшены за счет

дополнительных мер безопасности. Хотя хранимая процедура может

быть вызвана просто путем передачи имени хранимой процедуры с

параметрами, подобно инструкции SQL, использование коллекции

Parameters объекта Command ADO.NET позволяет более явно

определить параметры хранимой процедуры, а также выходные

параметры и возвращаемые значения.

Чтобы вызвать хранимую процедуру, установите параметр

CommandType объекта Command в значение StoredProcedure.

После того, как параметр CommandType будет установлен равным

112

Page 113: IT Labs Tutorial

StoredProcedure, для описания параметров можно использовать

коллекцию Parameters, как показано в следующем примере.

Примечание. OdbcCommand при вызове хранимой процедуры

требует соблюдения полного синтаксиса CALL ODBC.

[C#]

SqlConnection nwindConn = new SqlConnection("Data

Source=localhost;Integrated Security=SSPI;Initial Catalog=northwind");

SqlCommand salesCMD = new SqlCommand("SalesByCategory",

nwindConn);

salesCMD.CommandType = CommandType.StoredProcedure;

SqlParameter myParm =

salesCMD.Parameters.Add("@CategoryName", SqlDbType.NVarChar,

15);

myParm.Value = "Beverages";

nwindConn.Open();

SqlDataReader myReader = salesCMD.ExecuteReader();

Console.WriteLine("{0}, {1}", myReader.GetName(0),

myReader.GetName(1));

while (myReader.Read())

113

Page 114: IT Labs Tutorial

{

Console.WriteLine("{0}, ${1}", myReader.GetString(0),

myReader.GetDecimal(1));

}

myReader.Close();

nwindConn.Close();

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

При использовании параметров с SqlCommand имена параметров,

добавляемых в коллекцию Parameters, должны соответствовать

именам маркеров параметров хранимой процедуры. Поставщик

данных .NET Framework для SQL Server обрабатывает параметры в

хранимой процедуре как именованные параметры и ищет

соответствующие маркеры параметров.

Поставщик данных .NET Framework для SQL Server не

поддерживает использование вопросительного знака (?) в качестве

поля подстановки при передаче параметров в инструкцию SQL или

хранимую процедуру. В этом случае необходимо использовать

именованные параметры, как в примере ниже.

SELECT * FROM Customers WHERE CustomerID = @CustomerID

Пример выполнения лабораторной работы

Задание. Для выполнения задания использовать базу данных,

представленную в лабораторной работе № 3. Необходимо создать веб

приложение, запрашивающее имя студента, предмет и временной

период. После ввода информации приложение должно рассчитать

минимальную оценку, которую получил указанный студент по

указанному предмету за указанный период. Расчет должен

осуществлять посредством вызова хранимой процедуры.

114

Page 115: IT Labs Tutorial

Основные шаги Алгоритм решения Создание базы

данных

Создание базу

данных с

именем lab5

Создайте базу данных

описанную в третьей лабораторной

работе.

Заполните данные в таблицы

базы данных.Реализация

хранимой

процедуры

Добавьте

хранимую

процедуру,

выполняющую

запрос согласно

заданию

В панели Server Explorer

выберите пункт Data Connections и

откройте ветку для созданной БД.

На пункте Stored Procedures

щелкаем правой кнопкой мыши и

выбираем Add New Stored

Procedures… После чего

появляется окно, в котором можно

ввести текст хранимой процедуры.

По умолчанию в окне

выводится текст:CREATE PROCEDURE dbo.StoredProcedure1

/*(@parameter1 int = 5,@parameter2 datatype OUTPUT)*/

AS/* SET NOCOUNT ON */ RETURN

115

Page 116: IT Labs Tutorial

Рисунок 5.1 Окно создания хранимой процедуры.Реализация

хранимой

процедуры

Измените имя процедуры на

SelectAVGMarks

Укажите следующий код для

хранимой процедуры.

ALTER PROCEDURE dbo.StoredProcedure1

--объявление входных переменных

@p_date_begin datetime,

@p_date_end datetime,

@i_id_student int,

@i_id_subject int,

--объявление выходных переменных

@sum int = 0 output

AS

--осуществляем выборку в переменную sum

SELECT @sum = MIN(i_mark) from Registers

where d_date between @p_date_begin and @p_date_end

and i_id_student = @i_id_student

and i_id_subject = @i_id_subject

RETURN @sum

Параметры, как входные так и

выходные обозначаются

116

Page 117: IT Labs Tutorial

специальным префиксом @. Для

выходных параметров указано

ключевое слово output .

Параметр @p_date_begin означает

начало периода выборки данных,

@p_date_end окончание

периода выборки данных,

@i_id_student – уникальный

идентификатор студента,

@i_id_subject – уникальный

идентификатор предмета. Запрос

на языке SQL можно прочитать

как: «выбрать минимальное

значение поля i_mark из таблицы

Registers, где значение поля d_date

лежит между значениями

параметров @p_date_begin и

@p_date_end соответственно И

значение поля i_id_student равно

значению параметра @i_id_student

И значение поля i_id_subject равно

значению параметра

@i_id_subject».Создание

ASP.NET

приложения,

реализующей

вызов

хранимой

процедуры.

Создание веб

сайта с именем

lab5.

Создайте ASP.NET веб сайт с

именем lab5 аналогичным образом,

показанным в лабораторной работе

№ 1.

117

Page 118: IT Labs Tutorial

Создание

элементов

управления

SQL DataSource

Добавьте элемент

SQLDataSource и настройте его

свойства следующим образом: Id =

sdsStudents.

Подключение и запрос на

выборку данных из таблицы

Students реализуйте с помощью

мастера (аналогично действиям

указанным в лабораторной работе

№ 3) что бы значение свойства

SelectQuery приняло следующий

вид: «SELECT [vc_name],

[i_id_student] FROM [Students]».

Добавьте элемент

SQLDataSource и настройте его

свойства следующим образом: Id =

sdsSubjects.

Подключение и запрос на

выборку данных из таблицы

Students реализуйте с помощью

мастера (аналогично действиям

указанным в лабораторной работе

№ 3) что бы значение свойства

SelectQuery приняло следующий

вид: «SELECT [i_id_subject],

[vc_name] FROM [Subjects]».Создание

элементов

управления на

веб форме.

Добавьте на веб форму элемент

управления Label и измените его

свойства Id = lbStudent, Text =

“Студент”.

118

Page 119: IT Labs Tutorial

Добавьте элемент

DropDownList, установите его

свойство Id = ddlStudents и

воспользуйтесь мастером заданий

«Choose Data Source» для элемента.

В поле Select a Data Source укажите

SQLDataSource sdsStudents, в

выпадающем списке «Select a data

field to display in the DropDownList»

установите значение «vc_name», в

выпадающем списке «Select a data

field to the value of the

DropDownList» установите

значение «i_id_student».

Добавьте на веб форму элемент

управления Label и измените его

свойства Id = lbSubject, Text =

“Предмет”.

Добавьте элемент

DropDownList, установите его

свойство Id = ddlSubjects и

воспользуйтесь мастером заданий

«Choose Data Source» для

элемента. В поле Select a Data

Source укажите SQLDataSource

sdsSubjects, в выпадающем списке

«Select a data field to display in the

DropDownList» установите

значение «vc_name», в

119

Page 120: IT Labs Tutorial

выпадающем списке «Select a data

field to the value of the

DropDownList» установите

значение «i_id_subject».

Добавьте на веб форму элемент

управления Label и измените его

свойства Id = lbDataBegin, Text =

“Дата начала периода”. Добавьте

на веб форму элемент управления

TextBox и измените его свойство Id

= tbDataBegin.

Добавьте на веб форму элемент

управления Label и измените его

свойства Id = lbDataEnd, Text =

“Дата конца периода”. Добавьте на

веб форму элемент управления

TextBox и измените его свойство Id

= tbDataEnd.

Добавление

элементов для

вывода

результата

расчета.

Добавьте на веб форму элемент

управления Label и измените его

свойства Id = lbResult, Text =

“Минимальная оценка”. Добавьте

на веб форму элемент управления

TextBox и измените его свойство Id

= tbResult.

Добавьте на веб форму элемент

управления Button и измените его

свойства Id =btCalculate, Text =

120

Page 121: IT Labs Tutorial

«Вычислить» .

Запустите проект. Должен

получиться результат показанный

на рисунке 5.2

Рисунок 5.2 Элементы управления ASP.NET приложения.Вызов

хранимой

процедуры.

Двойным щелчком мыши

кликните на кнопке btCalculate. MS

Visual Studio сгенерирует метод, в

котором будет осуществлен вызов

хранимой процедуры. protected void Page_Load(object sender, EventArgs e)

{

if (IsPostBack == false)

{

tbDataBegin.Text = DateTime.Today.ToString();

tbDataEnd.Text = DateTime.Today.ToString();

121

Page 122: IT Labs Tutorial

}

} protected void btCalculate_Click(object sender, EventArgs e)

{

String sConnString = "Data Source=notebook;Initial

Catalog=lab3;Persist Security Info=True;User ID=sa;Password=sa";

SqlConnection conn = new SqlConnection(sConnString);

SqlCommand cmd = new SqlCommand("SelectAVGMarks", conn);

cmd.CommandType = CommandType.StoredProcedure;

//объявления параметров

SqlParameter p_date_begin = new SqlParameter("p_date_begin",

SqlDbType.DateTime);

p_date_begin.Value = tbDataBegin.Text;

cmd.Parameters.Add(p_date_begin);

SqlParameter p_date_end = new SqlParameter("p_date_end",

SqlDbType.DateTime);

p_date_end.Value = tbDataEnd.Text;

cmd.Parameters.Add(p_date_end);

SqlParameter p_id_student = new SqlParameter("i_id_student",

SqlDbType.Int);

p_id_student.Value = ddlStudents.SelectedValue.ToString();

cmd.Parameters.Add(p_id_student);

SqlParameter p_id_subject = new SqlParameter("i_id_subject",

SqlDbType.Int);

122

Page 123: IT Labs Tutorial

p_id_subject.Value = ddlSubjects.SelectedValue.ToString();

cmd.Parameters.Add(p_id_subject);

SqlParameter sum = new SqlParameter("sum", SqlDbType.Int);

sum.Direction = ParameterDirection.Output;

cmd.Parameters.Add(sum);

try

{

conn.Open();

cmd.ExecuteNonQuery();

}

catch (Exception ex)

{

throw (ex);

}

finally

{

if (conn.State == ConnectionState.Open)

conn.Close();

}

tbResult.Text = sum.Value.ToString();

}

123

Page 124: IT Labs Tutorial

Рисунок 5.3 Результат функционирования приложения.

Задания на выполнение лабораторной работы

Требуется изменить тематический веб сайт, созданный в

предыдущей работе и для выборки данных, редактирования и

удаления использовать хранимые процедуры. Кроме этого

разработать не менее 3-х хранимых процедур, осуществляющих

сложные выборки данных

Контрольные вопросы

1. Дайте определение хранимой процедуры.

2. В чем заключаются основные преимущества хранимых

процедур.

3. С помощью каких объектов и методов осуществляется вызов

хранимых процедур в ASP.NET приложении.

124

Page 125: IT Labs Tutorial

4. Каким образом обозначаются в хранимых процедурах входные

параметры? Выходные?

5. Опишите основные шаги для реализации методов ASP.NET

приложения использующие хранимые процедуры.

6. Синтаксис языка T-SQL создания хранимой процедуры.

7. Синтаксис языка T-SQL изменения хранимой процедуры.

8. Синтаксис языка T-SQL удаления хранимой процедуры.

125

Page 126: IT Labs Tutorial

ЛАБОРАТОРНАЯ РАБОТА № 6. АУТЕНТИФИКАЦИЯ И

АВТОРИЗАЦИЯ В ВЕБ ПРИЛОЖЕНИЯХ

Цель и задачи лабораторной работы

Цель работы: получение пракилотических навыков создания

безопасных ASP.NET приложений с использованием механизмов

аутентфиикации и авторизации..

Задачи:

1) Создать ASP.NET приложение, осуществляющую

аутентификацию пользователя и настроить web.config файл в

соответствии с заданием.

2) Реализовать хранимую процедуру, осуществляющую .

3) Реализовать не менее 3-х хранимых процедур, согласно

заданию.

4) Создать ASP.NET приложение, в котором осуществить вызов

хранимых процедур.

Теоретические положения

Большинство web-сайтов работают в режиме анонимного доступа.

Они содержат информацию, которую могут просматривать все

желающие, и поэтому не проводят аутентификацию пользователей.

Web-приложения ASP.NET предоставляют анонимный доступ к

серверным ресурсам посредством назначения учетной записи

анонимному пользователю. По умолчанию учетная запись для

анонимного доступа имеет имя в виде IUSER _ имя компьютера.

ASP.NET исполняет web-приложения под учетной записью

ASPNET. Это означает, что при выполнении задачи, не

предусмотренной привилегиями пользователя (например, запись

файла на диск), приложение получает отказ в доступе.

126

Page 127: IT Labs Tutorial

Идентификация пользователей применяется в тех случаях, когда

нужно предоставить доступ к разделам web -приложения только для

определенных пользователей. Это может быть Internet -магазины,

форумы, закрытые разделы в корпоративных Intranet -сайтах и так

далее.

Безопасность в приложениях ASP.NET основана на трех

операциях:

Аутентификация - процесс идентификации пользователя для

предоставления доступа к какому-то ресурсу приложения (разделу

сайта, странице, базе данных, :). Аутентификация основана на

проверке сведений о пользователе (например, имени и пароля);

Авторизация - процесс предоставления доступа пользователю на

основе данных аутентификации;

Олицитворение (impersonalisation) - предоставление серверному

процессу ASP.NET прав доступа клиента.

Существует три способа аутентификации пользователей в

приложениях ASP.NET:

• аутентификация Windows - применяется для идентификации и

авторизации пользователей в зависимости от привилегий

учетной записи пользователя. Работает аналогично обычным

механизмам сетевой безопасности Windows и выполняется

контроллером домена;

• аутентификация Forms - пользователь вводит логин и пароль в

Web -форме, после чего авторизация происходит по списку

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

Применяется на большинстве Internet-сайтов при регистрации в

Inernet -магазинах, форумах, пр;

• аутентификация Passport - все пользователи имеют единое имя и

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

127

Page 128: IT Labs Tutorial

авторизации. Пользователи регистрируются в службе Microsoft

Passport.

Важно отметить, что аутентификация ASP.NET применяются

только для web -форм (.aspx -файлы), элементы управления (.ascx

-файлы) и прочих ресурсов ASP.NET. HTML-файлы не входят в этот

список. Для авторизации доступа к HTML -файлам нужно их

зарегистрировать вручную!

Тип аутентификации указывается в конфигурационном файле

Web.config :

<authentication mode= "[Windows/Forms/Passport/None]">

</authentication>

<authorization> - Авторизация. Для обеспечения авторизации

используются теги <allow users=” ” /> - разрешить пользователю

доступ

<deny users=” ” />- запретить пользователю доступ

Пример

<allow users=”Tony, Jason, DomainName\UserDomainName” />

кроме имен можно использовать символы

“*” – все

“?” – анонимные пользователи.

Полное описание тегов web.config файла указано в default

файле, который лежит в

{DISK}:\{SYSTEMDIR}\Microsoft.NET\Framework\{versionNu

mber}\CONFIG

128

Page 129: IT Labs Tutorial

Пример файла

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

<system.web>

<authentication mode="Forms">

<forms name="CookieFormApplication" loginUrl="login.aspx"

/>

</authentication>

<authorization>

<deny users="?" />

</authorization>

<sessionState mode="InProc" cookieless="false" timeout="20"/>

</system.web>

</configuration>

Пример выполнения лабораторной работы

Задание. Необходимо реализовать веб сайт с использованием

процедуры аутентификации и средств авторизации пользователя

Основные

шаги

Алгоритм решения

Конфигури

рование SQL-

сервера

1.Создание

ссылки на

внешнюю

утилиту

2.Запуск

утилиты

конфигурирова

ния SQL-севера

Выбираем пункт меню tools -> External

tools …

Нажимаем кнопку Add и указываем

параметры:

Title = RegSQL

Command =

C:\Windows\Microsoft.NET\Framevork\<ver

sion>\aspnet_regsql.exe

129

Page 130: IT Labs Tutorial

Нажимаем ОК

Выбираем пункт меню tools -> RegSQL

В появившемся диалоге нажимаем “next” и

выбираем пункт “Configure SQL-server for

application services”

В следующем окне диалога выбираем

установленный SQL-сервер, ставим тип

аутентификации – Windows и выбираем

базу данных

1. Нажимаем “Next”, “Finish”Создание

строки

подключения к

БД

1. Создание

новой строки

подсоединения

к БД с именем

«LocalSqlServer

»

В панели инструментов «Server Explorer»

выберем среди элементов нашего сайта

файл «web.config» и дважды щелкнем на

нем левой кнопкой мыши для открытия.

В разделе «ConnectionStrings» сразу после

строки <connectionStrings> добавим

строчку удаления старого параметра

<remove name = “LocalSqlServer” />

Копируем весь текст раздела <add name =

“StudentsConnectionString” …>

Вставляем скопированный текст после

предыдущей строки <remove …>.

Изменяем параметр name на

«LocalSqlServer»

Сохраним сделанные изменения, нажав

Ctrl+S или нажав соответствующую

кнопку на панели инструментовСоздание

новой Web-

формы для

1.Создание

нового каталога

«Admin»

Создадим новый каталог в нашем сайте:

вызываем контекстное меню элемента

«http://localhost/Students» на панели

130

Page 131: IT Labs Tutorial

нужд

администриров

ания сайта 2.Создание

формы

«Default.aspx» в

каталоге

«Admin»

инструментов «Server Explorer», выбираем

«New Folder» и вводим имя нового

каталога - «Admin»

Вызываем контекстное меню каталога

«Admin», выбираем «Add New Item…», в

появившемся окне выбираем «Web Form»,

имя формы оставляем без изменения

(Default.aspx) и нажимаем «Add»

В появившемся HTML-коде созданной

формы изменим заголовок (текст между

тегами <title>) «Untitled Page» на

«Administration» и имя формы страницы

(свойство name внутри тега <form>) на

«formAdmin»

Сохраним сделанные изменения, нажав

Ctrl+S или нажав соответствующую

кнопку на панели инструментов

131

Page 132: IT Labs Tutorial

Настройка

прав доступа к

каталогам

сайта

1. Настройка

метода доступа

к веб-сайту

Вызовем мастер настройки «ASP.NET

Configuration», щелкнув кнопку на

панели «Server Explorer»

На появившейся форме выбираем ссылку

«Security», или переходим на вкладку

«Security»

Вызываем мастер настройки безопасности,

щелкнув по ссылке «Use the security Setup

Wizard to configure security»

На приветственной странице мастера

щелкаем «Next»

На второй странице мастера выбираем

метод доступа к нашему веб-сайту: через

Интернет, «From the Internet», щелкаем

«Next»

На третьей странице мастера

ознакамливаемся с текущими настройками

хранилища данных сайта и жмем «Next»2. Создание

ролей,

определение

прав доступа

2.1.

Создание ролей

«Администрато

р» и

«Пользователь»

Для создания ролей на нашем сайте на

четвертой странице мастера ставим

флажок напротив «Enable roles» и жмем

«Next»

На следующей странице вводим имя новой

роли – «admin» и жмем «Add Role». После

этого на странице в списке доступных

ролей появится роль «admin»

Вводим имя другой роли – «user», жмем

«Add Role», убеждаемся что роль «user»

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

жмем «Next».

На пятой странице мастера заполним

132

Page 133: IT Labs Tutorial

Создание

формы входа

пользователя в

систему

1. Создание

в каталоге

«Students» веб-

формы

«Login.aspx»

Вызываем контекстное меню элемента

«http://localhost/Dtudent» на панели

инструментов «Server Explorer», выбираем

«Add New Item», в появившемся окне

выбираем тип добавляемого элемента –

«WebForm» и вводим имя - «Login.aspx»

В появившемся HTML-коде созданной

формы изменим заголовок (текст между

тегами <title>) «Untitled Page» на «Login

Page» и имя формы страницы (свойство

name внутри тега <form>) на «formLogin»

Сохраним сделанные изменения, нажав

Ctrl+S или нажав соответствующую

кнопку на панели инструментов

Конфигури

рование формы

входа

пользователя в

систему

1. Помещение

компоненты

входа в

систему на

форму

2. Конфигурир

ование

компоненты

входа в

систему

Открываем дизайнер формы Login.aspx

На вкладке Toolbox выбираем компоненту

“Login” и помещаем её на форму

Задаём параметры компоненты:

ID = UserLogin

FailureText = Войти не удалось.

Возможно, Вы ввели неправильный пароль

PasswordLabel = Пароль

PasswordRequired = Пароль обязателен

RememberMe = запомнить пароль

UserNameLabel = Имя пользователя

UserNameRequired = Имя пользователя

обязательно

TitleText = Вход в системуСоздаём 1. Создаём На макете страницы кликаем по

133

Page 134: IT Labs Tutorial

обработчик

входа в

систему и

страницу

добавления

пользователя

обработчик

события после

авторизации и

перенаправляет

пользователей

роли admin на

страницу

"Admin/Default.

aspx", а прочих

на

"Default.aspx"

2. На

странице

“Admin/Default.

asp создаём

ссылку на

“/Default.aspx”

3. Создаём

компоненту. В окне Properties переходим

на вкладку.

Двойным щелчком на против строки

LoggedIn создаём обработчик события на

прохождение пользователем авторизации.

После чего автоматически переходим на

страницу кода для Login.

Пишем код обработчика событий, который

создаёт строку ролей пользователя string[]

roles =

Roles.GetRolesForUser(UserLogin.UserNam

e);

Затем проверяет на наличие в строке роли

admin. if (Array.IndexOf(roles, "admin") !=

-1)

При наличии роли пользователь

перенаправляется на страницу

"Admin/Default.aspx", при её отсутствии на

страницу "Default.aspx"

Переходим на страницу

“Admin/Default.aspx”, переходим в режим

Design и перетаскиваем на форму из

Toolbox > Standard компонент HyperLink

В окне Properties меняем значение

свойства (ID) на BackLink. Поля Text – на

Students

Щелкаем на против свойства NavigateUrl

и нажимаем кнопку «…». И задаём

переход на страницу “/Default.aspx”

134

Page 135: IT Labs Tutorial

контрол

CreateUserWizar

d

и переводим

все его надписи

и сообщения

Перетаскиваем на форму из

Toolbox > Login компонент

CreateUserWizard

В окне Properties меняем следующим

образом свойства:

CancelButtonText = Отмена

CompleteSuccessText = Учетная запись

успешно создана.

ConfirmPasswordCompareErrorMessage =

Пароль и Подтверждение пароля должны

совпадать.

ConfirmPasswordLabelText =

Подтверждение пароля:

ConfirmPasswordRequredErrorMessage =

Необходимо подтверждение пароля.

ContinueButtonText = Продолжить

CreateUserButtonText = Создать

пользователя

DuplicateEmailErrorMessage = Введенный

вами e-mail уже находится в списке

пользователей, пожалуйста, введите

другой e-mail.

DuplicateUserNameErrorMessage =

Пожалуйста, введите другое имя

пользователя.

EmailRegularExpressionErrorMessage =

Пожалуйста, введите другой e-mail.

EmailRequredErrorMessage = Адрес e-mail

обязателен.

135

Page 136: IT Labs Tutorial

FinishCompleteButtonText = Завершить

InvalidAnswerErrorMessage = Пожалуйста,

введите другой ответ на секретный вопрос.

InvalidEmailErrorMessage = Пожалуйста,

введите правильный e-mail.

InvalidPasswordErrorMessage =

Необходимая длина пароля: {1}.

InvalidErrorQuestionMessage =

Пожалуйста, введите другой секретный

вопрос.

PasswordLabelText = Пароль:

PasswordRegularExpressionErrorMessage =

Пожалуйста, введите другой пароль.

PasswodRequredErrorMessage = Пароль

обязателен.

QuestionLabelText = Секретный вопрос:

QuestionRequredErrormessage = Секретный

вопрос необходим.

StartNextButtonText = Далее

StepNextButtonText = Далее

StepPreviousButtonText = Назад

UnknownErrorMessage = Ваша учетная

запись не была создана, пожалуйста,

попробуйте еще раз.

UserNameLabelText = Имя пользователя:

UserNameRequredErrorMessage = Имя

пользователя обязательно.

AnswerLabelText = Ответ на секретный

вопрос:

136

Page 137: IT Labs Tutorial

4. Создаём

обработчик

события по

добавлению

пользователя

AnswerRequredErrorMessage = Ответ на

секретный вопрос обязателен.

(ID) = MyCreateUserWizard

Щёлкаем напротив

ContinueDestinationPageUrl, нажимаем

кнопку «…». В появившемся окне слева

выбираем папку Admin, справа –

Default.aspx. Это значит, что с этой

страницы будем перенаправлены на

“Default.aspx”.

В окне Properties переходим на вкладку

Events. Двойной щелчок напротив

CreatedUser создаёт обработчик события

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

В обработчике пользователя в данную

роль

Roles.AddUserToRole(MyCreateUserWizard

.UserName, "user");Проверка

формы входа в

систему и

добавления

студента

1. Запуск

отладки

приложения

2. Ввод

тестовых

данных

Выбираем пункт меню Debug -> Start

Debugging

В появившейся форме вводим заранее

заготовленные имя пользователя и

пароль и жмём “Войти”

В появившейся форме заполняем

данные о новом студенте и нажимаем

кнопку “Создать пользователя”

Идём по ссылке “Students”, чтобы

убедиться в корректности процедуры

добавления нового студентаПроверка 1. Запустить Выбираем пункт меню Debug -> Start

137

Page 138: IT Labs Tutorial

сохранения

нового

пользователя

программу в

режиме

отладки

2. Вход в

систему под

новым

пользователе

м

Debugging

В появившейся форме вводим данные

вновь созданной записи

Нажимаем кнопку “Войти”

Задания на выполнение лабораторной работы

Необходимо доработать тематический сайт и реализовать в нем

процедуру аутентификации и правила авторизации пользователей.

Контрольные вопросы

1. Что такое аутентификация?

2. Что такое авторизация?

3. Что такое олицитворение?

4. Какие типы аутентификации используются в ASP.NET

приложениях?

5. Для чего предназначен web.config файл?

6. На каком языке написан web.config файл?

7. Дайте характеристику основным частям web.config файла

8. Опишите процесс создания безопасного ASP.NET приложения.

138

Page 139: IT Labs Tutorial

ЛАБОРАТОРНАЯ РАБОТА № 7. СОЗДАНИЕ ВЕБ СЛУЖБ

Цель и задачи лабораторной работы

Цель работы: получение практических навыков создания веб

служб и реализации вызов веб методов из ASP.NET приложения.

Задачи:

1) Создать веб – службу, реализующую не менее 3 веб методов.

2) Реализовать вызов методов веб сервиса в ASP.NET приложении.

Теоретические положения

Веб-служба XML — это программируемая сущность, например

логика приложения, доступная любому числу разнородных систем

посредством общепринятых стандартов Интернета, таких как XML и

HTTP. В основе веб-служб XML лежит возможность создания с

помощью языка XML и других стандартов Интернета

инфраструктуры, устраняющей многие проблемы, связанные с

взаимодействием приложений.

Веб-служба XML может использоваться внутренне одним

приложением или предоставляться по Интернету любому числу

внешних приложений. Поскольку веб-служба XML доступна через

стандартный интерфейс, она позволяет разнородным системам

работать совместно в единой вычислительной сети.

Веб-службы XML, не обладая универсальными возможностями

переноса кода, представляют собой надежное решение для передачи

данных и взаимодействия систем. При всех различиях, существующих

между различными моделями компонентов, операционными

системами и языками программирования, в веб-службах XML в

качестве фундаментального средства для обмена данными

применяются сообщения на основе языка XML. Можно создавать

приложения, в которых возможности веб-служб XML из различных

139

Page 140: IT Labs Tutorial

источников объединяются точно так же, как обычно объединяются

компоненты в распределенных приложениях.

Одной из основополагающих характеристик веб-служб XML

является независимость между реализацией службы и ее

использованием. Поскольку в качестве механизма создания веб-

службы XML и доступа к ней используются XML-сообщения,

клиенты и поставщики веб-служб XML могут не знать друг о друге

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

С веб-служб XML началась новая эпоха в разработке

распределенных приложений. Она больше не зависит от разногласий

моделей объектов и «конкурсов красоты» среди языков

программирования. Отдельные системы внутренне связаны

собственными инфраструктурами, что негативно сказывается на

возможностях взаимодействия между приложениями. Веб-службы

XML выводят это взаимодействие на качественно новый уровень,

сводящий на нет все противоречия. Таким образом, веб-службы XML

как очередное революционное средство Интернета, становятся

фундаментальной структурой, связывающей любые вычислительные

устройства.

Построение веб-служб XML с помощью основных средств

ASP.NET

Поскольку ASP.NET предоставляет инфраструктуру для

внутренних работ веб-службы XML, разработчики могут

сосредоточиться на реализации функциональности определенной веб-

службы XML. Разработка веб-службы XML с использованием

ASP.NET начинается со следующих трех шагов:

1. Создание файла с расширением ASMX.

2. Объявление веб-службы XML в этом файле с помощью

директивы.

140

Page 141: IT Labs Tutorial

3. Определение методов веб-службы XML, составляющих ее

функциональность.

Определение методов веб-службы XML.

С методами класса, реализующего веб-службу XML, по

умолчанию нельзя связаться через Интернет, но при использовании

веб-служб XML, созданных с помощью ASP.NET, добавить такую

возможность очень просто. Чтобы сделать это, примените к открытым

методам атрибут WebMethod. Методы веб-службы XML, с которыми

можно связаться через Интернет, так и называются называются

методами веб-службы XML.

Методы веб-службы XML являются ключевой частью

инфраструктуры сообщений, применяемой в веб-службах XML. В

частности, клиент и веб-служба XML по умолчанию взаимодействуют

с помощью сообщений, а точнее — SOAP-сообщений. Клиенты

отправляют SOAP-запрос веб-службе XML, а метод веб-службы

возвращает ответ SOAP. Веб-служба XML определяет тип сообщений,

с которыми она работает, с помощью операций, определенных в языке

описания веб-служб (Web Services Description Language, WSDL). Эти

операции соответствуют каждому веб-методу внутри веб-службы

XML. Даже несмотря на то, что каждый из этих методов веб-службы

XML определен в ASP.NET с помощью метода класса, важно

понимать, что данные, которые в конечном итоге передаются по сети,

должны быть сериализованы в XML. Вследствие этого важно

помнить, что веб-службы XML не являются заменой DCOM, а

представляют из себя инфраструктуру сообщений для

межплатформенных коммуникаций с использованием промышленных

стандартов.

141

Page 142: IT Labs Tutorial

Пример выполнения лабораторной работы

Задание необходимо разработать веб сервис и вызвать веб метод

веб сервиса в ASP.NET приложении.

Задач

а

Основные

шаги

Алгоритм решения

Создать

пустой

веб сайт

Создать

пустой веб

сайт с

именем

lab_7

Запустите MS Visual Stidio и выберите

создание пустого веб сайта. Введите имя веб

сайта lab_7.

В окне обозревателя проекта Solution

Explorer создайте новую папку (Folder) с

именем ws. Для этого щелкните правой

кнопкой мыши на папке и добавите новый

каталог. В этой папке будут находится файлы

веб сервиса.

Щелкните правой кнопкой мыши на папке

ws и добавьте новой узел (Add New Item).

В открывшемся меню выберите Web

Service, даете ему называние «WebService» и

щелкните на кнопку «Add».

После этого на рабочей зоне генерируется

страница со следующим кодом:

using System;

using System.Web;

using System.Collections;

using System.Web.Services;

using System.Web.Services.Protocols;

/// <summary>

/// Summary description for WebService

142

Page 143: IT Labs Tutorial

/// </summary>

[WebService(Namespace = "http://tempuri.org/")]

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

public class WebService : System.Web.Services.WebService {

public WebService () {

//Uncomment the following line if using designed components

//InitializeComponent();

}

[WebMethod]

public string HelloWorld() {

return "Hello World";

}

}

По умолчанию Visual Studio создала метод

веб сервиса (WebMethod) под азванием

HelloWorld который вызвращает строку

«Hello World».

В окне обозревателя проекта Solution

Explorer создайте новую папку (Folder) с

именем forms. Для этого щелкните правой

кнопкой мыши на папке и добавите новый

каталог. В этой папке будут находится файлы

веб приложения, вызывающего .

Щелкните правой кнопкой мыши на папке

forms и добавьте новой узел (Add New Item).

В открывшемся меню выберите Web Service,

143

Page 144: IT Labs Tutorial

даете ему называние «Default» и щелкните на

кнопку «Add».

В обозревателе проектов должно получится

следующее (рисунок 7.1)

Рисунок 7.1 Содержание обозревателя проекта.Если запустить приложение то будет

выведено окно, показанное на рисунке 7.2.

На данной форме отображены все

доступные веб методы (сейчас доступен

только один веб метод под названием

HelloWorld)

144

Page 145: IT Labs Tutorial

Рисунок 7.2 Список доступных веб методов. Если выбрать указанный веб метод, то

отобразится окно показанное на рисунке

7.3. Из этого окна можно осуществить

выполнение веб метода. После нажатия на

кнопку «Invoke», отобразится результат

выполнения веб сервиса. Результат

выполнения отображен в структуре XML.

145

Page 146: IT Labs Tutorial

Рисунок 7.3 Окно для тестирования выполнения веб метода.

Рисунок 7.4 Результат выполнения веб метода.Добавите в начале файла default.aspx.cs

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

определен веб сервис:

using System.Web.Services;

Выз Создайте в В метод Page_Load добавьте код создания

146

Page 147: IT Labs Tutorial

ов веб

методо

в веб

сервиса

методе

Page_Load

объект

WebService и

осуществите

вызов метода

HelloWorld

объекта веб сервиса

protected void Page_Load(object sender,

EventArgs e)

{

if (!IsPostBack)

{

WebService ws = new WebService();

tbResult.Text = ws.HelloWorld();

}

}

Сохраните проект и запустите веб

приложение. Результат должен быть

аналогичным, показанному на рисунке 7.5

Рисунок 7.5 Результат выполнения веб приложения.Реал

изация

веб

метода,

подсчи

тываю

щего

Создание

соединения

к базе

данных.

Усложним задачу.

Реализуем хранимую процедуру

подсчитывающую среднюю оценку

View/server Explorer

Воспользуемся соединением, созданным в

работе № 5.

Создайте хранимую процедуру с именем

147

Page 148: IT Labs Tutorial

средню

ю

оценку

по всем

студент

ам.

«getavgmark» аналогичным образом,

описанным в лабораторной работе № 5.

Измените содержимое хранимой процедуры

на следующее:

ALTER PROCEDURE dbo.getavgmark

--выходные переменные

@sum float = 0 output

AS

--осуществляем выборку в переменную

sum

SELECT @sum = AVG(i_mark) from

Registers

RETURN @sum

Хранимая процедура выполняет следующий

запрос: «выбрать среднюю оценку по всем

студентам за весь период из таблицы

Registers».Создание

веб метода

вызывающе

го

хранимую

процедуру.

Создайте новый веб метод с названием

getAvgMark.

[WebMethod]

public float getAvgMark()

{

}

Для того чтобы использовать объекты и

методы подключения к базе данных

необходимо подключить пространство имен

using System.Data.SqlClient;

Напишите следующий код для метода:

148

Page 149: IT Labs Tutorial

[WebMethod]

public float getAvgMark()

{

String sConnString = "Data Source=notebook;Initial

Catalog=lab3;Persist Security Info=True;User ID=sa;Password=sa";

SqlConnection conn = new SqlConnection(sConnString);

SqlCommand cmd = new SqlCommand("getavgmark", conn);

cmd.CommandType = CommandType.StoredProcedure;

SqlParameter sum = new SqlParameter("sum", SqlDbType.Float);

sum.Direction = ParameterDirection.Output;

cmd.Parameters.Add(sum);

try

{

conn.Open();

cmd.ExecuteNonQuery();

}

catch (Exception ex)

{

throw (ex);

}

finally

{

if (conn.State == ConnectionState.Open)

conn.Close();

}

149

Page 150: IT Labs Tutorial

return float.Parse(sum.Value.ToString());

}

Создайте

элементы

управления

для

отображения

результатов

выполнения

веб методов.

Добавьте на веб форму элемент управления

TextBox, установите свойство Id = «tbResult2»

Добавьте на веб форму элемент управления

кнопка и установите его свойство Id =

«tbResult».

Дважды кликните на кнопку и напишите код

вызова веб метода getAvgMark.

protected void Button1_Click(object sender,

EventArgs e)

{

WebService ws = new WebService();

tbResult2.Text =

ws.getAvgMark().ToString();

}

Должен получится результат показанный на

рисунке 7.6

150

Page 151: IT Labs Tutorial

Рисунок 7.6 Результат работы веб приложения: вызов веб метода.

Задания на выполнение лабораторной работы

Доработайте тематический сайт реализованный в предыдущей

лабораторной работе и перенесите реализованные методы,

вызывающие хранимые процедуры в веб сервис. Осуществите вызоа

методов созданного веб сервиса.

Контрольные вопросы

1. Что такое веб сервисы?

2. В чем премущества и недосатки веб сервисов?

3. Дайте характеристику процесса создания веб сервисов.

4. Дайте характеристику процесса создания веб методов веб

сервиса.

5. Каким образом можно проверить работоспособность веб

сервиса?

6. Каким образом взаимодействую веб сервисы и веб формы в

одном веб сайте? В разных?

151

Page 152: IT Labs Tutorial

Литература

1. Встроенная справка к оснастке Internet Information Services.

2. Введение в библиотеку классов .NET Framework

http :// msdn . microsoft . com / library / RUS / cpguide / html / cpconthenetfra

meworkclasslibrary . asp

3. Курс «Внедрение сетевой инфраструктуры» Microsoft Windows

2000 (номер курса 2153B). Урок 12. Настрока WEB-сервера.

4. Доступ к данным с помощью ADO.NET

http :// msdn . microsoft . com / library / RUS / cpguide / html / cpconoverview

ofadonet . asp

5. Григорий Грин Введение в ASP.

http://www.citforum.ru/internet/asp/asp_intro.shtml

6. ASP in a Nutshell: A Desktop Quick Reference by A. Keyton

Weissinger Copyright © 1999 O’Reilly & Associates, Inc. All rights

reserved. Printed in the United States of America. ISBN: 1-56592-

490-8

7. ASP Первые шаги http :// www . firststeps . ru / html / asp /

8. Создание веб-приложений ASP.NET.

http://msdn.microsoft.com/library/rus/default.asp?url=/library/RUS/c

pguide/html/cpconcreatingaspwebapplications.asp

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

http://msdn.microsoft.com/library/rus/default.asp?url=/library/RUS/c

pguide/html/cpconapplicationstate.asp

10.Использование провайдеров данных .NET Framework для

доступа к данным.

http://msdn.microsoft.com/library/rus/default.asp?url=/library/rus/cp

guidenf/html/cpconusingadonetproviderstoaccessdata.asp

152

Page 153: IT Labs Tutorial

11.Аутентификация и авторизация в ASP.NET приложениях

http :// msdn . microsoft . com / library / rus / default . asp ? url =/ library / rus / cp

guidenf / html / cpconaspnetwebapplicationsecurity . asp

12.Общие сведения о веб-службах XML

http://msdn.microsoft.com/library/rus/default.asp?url=/library/RUS/c

pguide/html/cpconwebservicesoverview.asp

153

Page 154: IT Labs Tutorial

Оглавление

Введение.......................................................................................................3

Лабораторная работа № 1. Установка и настройка веб сервера IIS,

установка MS Visual Studio 2005 и MS SQL Server 2005........................4

Лабораторная работа № 2. Разработка веб приложения с

использованием технологии ASP.NET....................................................25

Лабораторная работа № 3. Публикация данных в веб. часть 1.............56

Лабораторная работа № 4. Публикация данных в веб. часть 2.............85

Лабораторная работа № 5. Использование хранимых процедур в веб

приложениях............................................................................................116

Лабораторная работа № 6. Аутентификация и авторизация в веб

приложениях............................................................................................130

Лабораторная работа № 7. Создание веб-служб..................................145

Литература...............................................................................................158

154


Top Related