Практическая работа по теме 7. &quot

advertisement
Практическая работа по теме 7. "Web службы и
технологии промежуточного уровня"
Создание повторно используемых компонентов промежуточного уровня. Отладка и
тестирование программ: компоненты, использование компонентов. Доступ к объектам с
помощью Web-служб: размещение нового компонента.
Оглавление
Задание 1. Создание повторно используемых компонентов
промежуточного уровня
Задание 2. Использование компонента в другом приложении
Задание 3. Доступ к объектам с помощью web-служб
Задание 1. Создание повторно используемых компонентов
промежуточного уровня
Цель
Изучить технологию создания и использования компонентов промежуточного уровня.
Решение
Разработать компонент, выполнить его компиляцию, использовать созданный компонент
в другом приложении.
Обсуждение
Рассмотрим по шагам технологию создания нового компонента, его компиляцию и
последующее использование в приложениях.
1. Создайте новый или откройте уже имеющийся проект WebApplication.
2. Щелкните правой кнопкой мыши на имени проекта в окне Solution Explorer и выберите
в контекстном меню команду Add-Add Component.
3. В диалоговом окне Add New Item в текстовом поле Name введите имя нового
компонента, например, GetRowCount.vb.
4. После создания пустого компонента нужно включить в него код функции GetRowCount,
которая возвращает целочисленное значение с количеством записей в таблице Employees
базы данных EmployeesInfo.
Программный код нового компонента приведен ниже:
Imports
Public
Inherits
Public
System.Data,
System.Data.SqlClient
Class
GetRowCount
System.ComponentModel.Component
Function
GetRowCount()
As
Integer
Try
Dim
cnnStr
As
String
cnnStr="server=(local);database=EmployeeInfo;
TRUSTED_CONNECTION=Yes"
Dim
cnn
As
New
SqlConnection(cnnStr)
Dim cmd As New SqlCommand("SELECT COUNT(*)
FROM
Employees",
cnn)
cnn.Open()
Dim dr As SqlDataReader = cmd.ExecuteReader(
CommandBehavior.CloseConnection)
Do
While
dr.Read
GetRowCount
=
dr.GetValue(0)
Loop
dr.Close()
cnn.Close()
Catch
ex
As
Exception
System.Console.WriteLine("Ошибка " & ex.Message)
End
Try
End
Function
End Class
5. Для компоновки нового компонента щелкните в окне Solution Explorer на имени
проекта правой кнопкой мыши и выберите в контекстном меню команду Build.
6. Добавьте в проект Web-форму с программным кодом, приведенным ниже:
Imports
WebApplication1.GetRowCount
Private
Sub
Page_Load(ByVal
sender
As
System.Object, ByVal e As System.EventArgs) Handles
MyBase.Load
Dim
GRC
As
New
GetRowCount
Response.Write(GRC.GetRowCount.ToString)
GRC.Dispose()
End Sub
7. Для созданной страницы также выполните компоновку (Build).
8. В окне Solution Explorer для web-формы выберите в контекстном меню команду View in
Browser.
После выполнения всех перечисленных действий и доступа к базе данных будет
отображена Web-страница с числом, равным количеству записей в таблице Employees
(рис. 7.1).
Рис. 7.1. Результат выполнения сценария доступа к базе данных
Самостоятельно
Самостоятельно разработайте собственный компонент и выполните его тестирование.
Задание 2. Использование компонента в другом приложении
Цель
Использовать созданный компонент в другом приложении.
Решение
Разработать компонент, выполнить его компиляцию, использовать созданный компонент
в другом приложении.
Обсуждение
Рассмотрим по шагам технологию использования созданного компонента в другом
приложении.
1. Создайте новое приложение на основе шаблона Windows Application среды Visual
Studio.NET.
2. Создайте в нем ссылку на файл C:\Inetpub\wwwroot\WebApplication1\bin\
WebApplication1.dll. При использовании компонента из другого пространства имен или
другого проекта нужно помнить, что dll-файл компонента находится в каталоге bin своего
проекта. Например, dll-файл Web-приложения и именем Web_приложение обычно
находится в каталоге C:\inetpub\wwroot\Web_приложение\bin.
3. Для указания ссылки на внешний компонент щелкните правой кнопкой мыши на
элементе References в окне Solution Explorer и выберите в контекстном меню команду Add
Reference.
4. В диалоговом окне References щелкните на кнопке Browse и укажите dll-файл
используемого компонента.
5. Для закрытия диалогового окна References щелкните на кнопке OK.
6. В форме разместите два элемента: Label и Button.
7. Добавьте программный код в обработчик события щелчка по командной кнопке:
Imports
WebApplication1.GetRowCount
Private
Sub
Button1_Click(ByVal
sender
As
System.Object, ByVal e As System.EventArgs) Handles
Button1.Click
Dim GRC As New WebApplication1.GetRowCount
Label1.Text
=
"Это
строка
из
компонента
GetRowCount " & GRC.GetRowCount.ToString & "
строк
в
таблице
Employees"
GRC.Dispose()
End Sub
Самостоятельно
Самостоятельно подключите разработанный вами компонент к другому приложению и
выполните его тестирование.
Задание 3. Доступ к объектам с помощью web-служб
Цель
Научиться создавать Web-службы и использовать их в Windows и Web-приложениях.
Решение
Разработать Web-службу для доступа к базе данных и обратиться к ее методам из
Windows и Web-форм.
Обсуждение
Рассмотрим технологию создания многоуровневого распределенного приложения для
интрасети. Это приложение будет состоять из трех логических уровней:
1. уровня данных,
2. промежуточного уровня (рабочего бизнес объекта),
3. уровня пользовательского интерфейса.
Уровень данных представлен базой данных SQL Server. Уровень рабочего объекта
управляет доступом к данным и передачей их клиентам. Пользовательский интерфейс
будет состоять из приложения, основанного на веб-технологии и обычного Windowsприложения.
Иллюстрация на рис. 7.2. описывает архитектуру задуманного приложения.
Рис. 7.2. Архитектура создаваемого распределенного приложения
Наше приложение будет представлять собой простое приложение, работающее с данными
и предоставляющее возможность поиска и редактирования этих данных.
Будут построены Windows- и веб-клиенты для просмотра таблицы Authors из базы данных
Pubs, расположенной на SQL Server.
При реализации веб-части будет использован конструктор веб-форм для создания вебстраницы, совместимой со стандартным обозревателем, поддерживающим HTML 3.2. На
сервере код веб-форм будет вызывать веб-службу XML для получения данных,
содержащих информацию об авторах, полученную из базы данных.
Для Windows-части построим Windows-приложение, которое будет взаимодействовать с
той же веб-службой XML для получения набора данных, содержащего информацию об
авторах. Связь с веб-службой XML предполагается осуществлять с использованием HTTP
и XML.
Веб-служба XML и клиентские приложения будут созданы на одном сервере, хотя база
данных может быть размещена на другом сервере.
Сервер приложений и сервер баз данных должны располагаться в одной интрасети.
Данный способ организации проектов позволяет использовать проверку подлинности
Windows для получения доступа к базе данных и проверки приложения.
В то же время предложенная организация позволяет не рассматривать многочисленные
нюансы доступа к ресурсам, предоставляя, таким образом, возможность видеть
взаимодействие веб-службы XML и клиентских приложений.
Рассмотрим процесс создания распределенного приложения
Одним из возможных сценариев разработки распределенного приложения является
создание каждого уровня по отдельности, вероятнее всего, начиная с уровня данных,
затем переходя к уровню объекта правил бизнеса и заканчивая созданием
пользовательского интерфейса. Данные для нашего примера уже сгенерированы и
доступны в виде базы данных Pubs в SQL Server. Поэтому рассмотрение примера начнем с
создания бизнес-объекта - веб-службы XML - с последующим построением двух
пользовательских интерфейсов - страницы веб-форм и Windows-формы.
Процесс разработки для нашего примера выглядит следующим образом:
1. Создание рабочего объекта среднего уровня.
2. Создание проекта веб-службы ASP.NET.
3. Создание и настройка соединения с базой данных и схемы набора данных.
4. Предоставление набора данных из бизнес-объекта.
5. Проектирование интерфейса пользователя.
6. Создание интерфейса пользователя Windows.
7. Создание веб-интерфейса пользователя.
Шаг 1. Создание рабочего объекта среднего уровня
Созданный бизнес-объект будет выполняться на веб-сервере в целях обеспечения
производительности и масштабируемости, необходимых для распределенного
приложения. Кроме того, бизнес-объект будет реализован в виде веб-службы XML, чтобы
клиенты могли использовать стандартные протоколы Интернета для связи с рабочим
объектом с любой платформы.
В нашем примере веб-служба XML будет хранить подключения данных и определение
набора данных. Затем будут добавлены методы веб-службы XML для предоставления
набора данных, давая возможность другим приложениям просматривать и изменять набор
данных.
Шаг 2. Создание проекта веб-службы ASP.NET
Шаблон проекта "Веб-служба ASP.NET" представляет собой проект, основанный на вебтехнологии, разработанный для создания компонентов среднего уровня,
предоставляющих свои интерфейсы в виде веб-служб XML.
Веб-служба XML будет предоставлять два метода:
 Метод GetAuthors, будет возвращать набор данных из базы данных.
 Метод UpdateAuthors, будет обновлять базу данных с использованием
изменений, полученных от пользователя.
Для реализации этих методов создается несколько закрытых членов. Среди них:
определение набора данных, адаптер данных, подключение данных и несколько объектов
команд для получения данных из базы данных и ее обновления. На рис. 7.3 показана
структура разрабатываемой Web службы XML.
Чтобы создать проект веб-службы ASP.NET:
1. В меню Файл выделите пункт Создать и выберите команду Проект, чтобы открыть
диалоговое окно Создать проект.
2. Выберите папку Проекты Visual Basic в поле Типы проектов, а затем в поле Шаблоны
выберите Веб-служба ASP.NET.
3. В поле Расположение введите имя веб-сервера (расположенного на компьютере, на
котором осуществляется разработка) с именем проекта
http://ServerName/AuthorsWebService.
4. Нажмите кнопку ОК.
Совет. Так как веб-сервер находится на вашем компьютере, можно использовать имя
сервера LOCALHOST.
Рис. 7.3. Структура Web-службы
Проект AuthorsWebService будет добавлен в решение. В среде разработки откроется
конструктор компонентов для файла Service1.asmx.
5. В обозревателе решений дважды щелкните файл Service1.asmx, чтобы выбрать его.
6. В окне "Свойства" установите для свойства Name компонента Service1 значение
AuthorsService.
7. В обозревателе решений щелкните правой кнопкой файл Service1.asmx, выберите
команду Переименовать и переименуйте файл в AuthorsService.asmx соответственно
имени службы.
Шаг 3. Создание и настройка соединения с базой
данных и схемы набора данных
В данном компоненте будет создано подключение к хранилищу данных и получен
экземпляр данных с использованием набора данных. Выполним создание и настройку
соединения с базой данных и схемы набора данных.
К веб-службе XML надо добавить два объекта: SqlDataAdapter и SqlConnection. Объект
подключения создает новое подключение к базе данных, тогда как адаптер данных
выполняет запрос к базе данных и передает результаты объекту DataSet. Адаптер данных
также выполняет обновление базы данных, используя изменения, сделанные
пользователем в наборе данных. Для хранения экземпляра данных, содержащихся в базе
данных, будет создан набор данных с помощью подключения к базе данных. Этот набор
данных будет в дальнейшем использоваться в примере для отображения данных в
Windows-форме и на странице веб-форм.
Чтобы создать подключение к базе данных и адаптер данных:
1. Выберите обозреватель серверов.
Примечание. По умолчанию обозреватель серверов отображается в виде вертикальной
полосы в левой части среды разработки. Если эта полоса не видна, в меню Вид выберите
команду Обозреватель серверов.
2. В обозревателе серверов щелкните правой кнопкой узел Подключения
данных и в контекстном меню выберите команду Добавить подключение.
3. На вкладке Подключение диалогового окна Свойства введите имя
сервера SQL Server, на котором установлена база данных Pubs. Если SQL
Server установлен на локальном компьютере, введите (local).
4.
Выберите
базу
данных
Pubs
из
списка.
5.
Нажмите
кнопку
Проверить
подключение
для
проверки
предоставленной информации, после чего нажмите кнопку ОК для
установления соединения.
В узле Подключения данных обозревателя серверов появится новый узел.
6. В обозревателе серверов разверните узел нового подключения, после
чего
откройте
узел
Таблицы.
7. Найдите узел authors и разверните его, чтобы увидеть поля таблицы
authors.
8. Щелкая поля при нажатой клавише CTRL, выберите поля au_id,
au_lname,
au_fname
и
city.
9. Перетащите эти поля из обозревателя серверов в область
конструктора. В конструкторе появится объект SqlConnection вместе с
объектом SqlDataAdapter (рис. 7.4).
Рис. 7. 4. Создание объектов SqlAdapter и SqlConnection в режиме конструктора
Теперь подключение к базе данных создано и передачу информации будет осуществлять
объект SqlDataAdapter. Эти компоненты настроены таким образом, чтобы производить
передачу набора данных, содержащих таблицу authors, из базы данных и обратно.
Необходимо произвести настройку параметров безопасности проекта для работы со
встроенной системой безопасности. Это осуществляется путем выключения анонимного
доступа.
Чтобы указать для проекта встроенную проверку подлинности Windows, необходимо
внести изменения в файлы проекта и настроить проект с помощью инструмента Internet
Information Services.
10. Запустите инструмент Internet Information Services. Его можно
вызвать через компонент Администрирование на Панели управления.
11.
Разверните
узел,
соответствующий
вашему
серверу.
12.
Разверните
узел
Веб-узел
по
умолчанию.
13. Щелкните правой кнопкой узел AuthorsWebService и выберите в
контекстном
меню
команду
Свойства.
14.
Перейдите
на
вкладку
Безопасность
каталога.
15. В группе Анонимный доступ и проверка подлинности нажмите кнопку
Изменить.
16.
Снимите
флажок
Анонимный
доступ.
17. Установите флажок Встроенная проверка подлинности Windows.
Теперь
каталог
веб-служб
XML
настроен
(рис.
7.5).
18. Вернувшись к проекту в Visual
Studio,
дважды
щелкните
файл
Web.config в обозревателе решений.
Рис. 7.5. Диалоговое окно для установки безопасности
19. Чтобы включить поддержку встроенной безопасности для веб-службы XML, добавьте
после тега следующий тег (рис. 7.6):
< identity impersonate="true"/>
Рис. 7.6. Редактирование файла Web.config
Чтобы создать определение класса набора данных:
21. В меню Данные выберите команду Создать DataSet.
В диалоговом окне Создание Dataset выберите параметр Создать и назовите набор данных
"authors1".
Не устанавливайте флажок "Добавить этот Dataset в конструктор".
Примечание. Файл схемы набора данных, authors1.xsd, будет создан и добавлен к проекту.
Этот файл схемы содержит определение класса для authors1. Этот класс, наследующий
класс DataSet, содержит определение типизированного набора данных для таблицы
authors.
22. В меню Файл выберите команду Сохранить все.
Шаг 4. Предоставление набора данных из бизнесобъекта
Следующим шагом нашего примера является предоставление доступа к объекту набора
данных, только что созданному в бизнес-объекте. Это действие делает набор данных
доступным для использования из Windows- или веб-приложений.
Добавим методы к веб-службе XML:
1. В обозревателе решений дважды щелкните файл AuthorsService, если он еще не открыт
в конструкторе.
2. В меню Вид выберите команду Исходный текст.
3. Добавьте метод с именем GetAuthors, предназначенный для доставки набора данных к
клиенту.
Этот метод, показанный ниже, создает новый набор данных authors1 и заполняет его,
используя объект SqlDataAdapter, основанный на таблице authors. Затем метод возвращает
набор данных.
< WebMethod> Public Function GetAuthors() As
authors1
Dim
authors
As
New
authors1()
SqlDataAdapter1.Fill(authors)
Return
authors
End Function
4. Добавим метод с именем UpdateAuthors для передачи изменений от клиента обратно в
базу данных.
Этот метод, показанный ниже, имеет в качестве параметра набор данных authors1
(authorChanges), содержащий измененные данные, и обновляет базу данных, используя
метод SqlDataAdapter.Update. Метод Update принимает изменения, сделанные в наборе
данных. Набор данных возвращается клиенту. После этого клиент использует
возвращенный набор данных для обновления собственного экземпляра набора данных
authors1.
< WebMethod> Public Function UpdateAuthors(ByVal
authorChanges
_
As
authors1)
As
authors1
If
Not
(authorChanges
Is
Nothing)
Then
SqlDataAdapter1.Update(authorChanges)
Return
authorChanges
Else
Return
Nothing
End
If
End Function
Примечание. Изучаемый пример получился очень большим, поэтому некоторые детали
здесь упущены, но в реальном приложении необходимо добавить к этим методам
проверку ошибок и обработку исключений.
5.
В
меню
Файл
выберите
команду
Сохранить
6. В меню Построение выберите команду Построить решение.
все.
Был создан бизнес-объект среднего уровня, содержащий набор данных, привязанный к
базе данных SQL Server. К веб-службе XML среднего уровня AuthorsWebService был
добавлен код, осуществляющий получение данных из источника данных и обновление
источника данных с использованием сделанных изменений. Клиент осуществляет доступ
к этим функциям с помощью методов GetAuthors и UpdateAuthors, содержащихся в вебслужбе XML (рис. 7.7).
Рис. 7.7. Программирование Web-службы
Шаг 5. Проектирование интерфейса пользователя
Следующим шагом после создания бизнес-объекта среднего уровня для доступа к данным
и представления их в виде веб-службы XML является проектирование клиентских
интерфейсов. В нашем примере рассмотрим два сценария: обычная форма Windows и
страница веб-форм. Эти интерфейсы будут созданы в виде отдельных проектов в составе
одного решения.
Шаг
6.
Windows
Создание
интерфейса
пользователя
Windows-интерфейс использует возможности клиентского компьютера для выполнения
части работы приложения. Как правило, интерфейс Windows предоставляет более
широкие функциональные возможности и более глубокое участие пользователя, чем вебинтерфейс. Нагрузка на сервер в этом случае меньше, чем для веб-интерфейса, так как
серверу не приходится выполнять всю логику приложения. Кроме того, интерфейс
Windows позволяет использовать ресурсы, доступные через операционную систему,
включая вызовы файловой системы и реестра.
Рис. 7.8 демонстрирует клиентскую часть, которая будет создана.
Рис.7.8. Windows-клиент для распределенного приложения
Приложение Windows, состоящее из одной формы Windows, будет содержать веб-ссылку
на AuthorsWebService. Данные из базы данных будут отображаться в элементе управления
DataGrid при нажатии кнопки "Загрузить" на форме. Загрузка реализуется путем вызова
метода GetAuthors веб-службы XML. Элемент управления DataGrid позволяет
редактировать данные напрямую, с передачей изменений в присоединенный набор
данных. Форма также будет содержать кнопку "Сохранить". Код этой кнопки будет
вызывать метод UpdateAuthors веб-службы XML для сохранения изменений в базе
данных.
Приступим к созданию приложения Windows.
1. В меню Файл выделите пункт Добавить проект и выберите команду Создать проект,
чтобы открыть диалоговое окно Добавление нового проекта.
2. Выберите папку Проекты Visual Basic в списке Типы проектов и в списке Шаблоны
выберите Приложение Windows.
3. Присвойте проекту имя AuthorsWinClient и выберите для него расположение.
Добавьте веб-ссылку на веб-службу ASP.NET, созданную ранее.
4. В обозревателе решений щелкните правой кнопкой проект AuthorsWinClient и в
контекстном меню выберите команду Добавить веб-ссылку.
5. Введите расположение проекта веб-службы XML
(http://ServerName/AuthorsWebService/AuthorsService.asmx) в поле URL-адрес в верхней
части диалогового окна Добавление веб-ссылки.
6. Нажмите кнопку Добавить ссылку.
Теперь можно создать в приложении экземпляр набора данных authors1.
Чтобы добавить в форму элементы управления:
7. С вкладки Windows Forms области элементов перетащите в форму элемент управления
DataGrid.
8. С вкладки Windows Forms области элементов перетащите в форму элемент управления
Button. Присвойте свойству Name кнопки значение LoadData, а свойству Text - значение
Load.
9. С вкладки Windows Forms области элементов перетащите в форму еще один элемент
управления Button. Присвойте свойству Name этой кнопки значение SaveData, а свойству
Text - значение Save.
10. С вкладки Данные области элементов перетащите в форму элемент управления
DataSet. Откроется диалоговое окно Добавление Dataset. Выберите параметр
Типизированный Dataset и в списка Имя выберите AuthorsWinClient.ServerName.authors1.
В результате в области компонентов будет создан объект DataSet, основанный на
определении класса набора данных authors1.
11. Выберите элемент управления DataGrid и укажите в списке свойства DataSource
значение AuthorData. Из списка свойства DataMember выберите authors. Заголовки
столбцов в элементе DataGrid будут установлены соответственно именам столбцов
таблицы authors.
Чтобы добавить код для кнопок LoadData и SaveData:
12. В меню Вид выберите команду Конструктор. Дважды щелкните кнопку LoadData,
чтобы добавить пустой обработчик для события Click. Методы веб-служб XML
вызываются путем создания экземпляра класса службы и последующего вызова методов
службы. В этом случае вызывается метод GetAuthors. Возвращаемый набор данных
объединяется с набором данных AuthorData. Свойство Credentials веб-службы XML
используется для передачи идентификационных данных веб-службе XML, которая, в свою
очередь, передает их серверу баз данных. Добавьте в метод следующий код:
Примечание. Если веб-служба XML выполняется не на локальном компьютере,
необходимо будет заменить значение localhost в данном примере именем сервера, на
котором выполняется веб-служба XML.
Private
Sub
LoadData_Click(ByVal
sender
As
System.Object,
_
ByVal e As System.EventArgs) Handles LoadData.Click
Dim
ws
As
New
AuthorsWinClient.localhost.AuthorsService()
ws.Credentials
=
System.Net.CredentialCache.DefaultCredentials
AuthorData.Merge(ws.GetAuthors())
End Sub
13. В меню Вид выберите команду Конструктор. Дважды нажмите кнопку SaveData,
чтобы добавить обработчик для события Click.
Если в наборе данных имеются изменения, создается новый набор данных типа authors1
для хранения только измененных данных. Этот набор данных затем передается методу
UpdateAuthors веб-службы XML. Набор данных возвращается с принятыми изменениями,
и набор данных AuthorData обновляется, чтобы отразить эти изменения.
14. Добавьте к методам следующий код:
Private
Sub
SaveData_Click(ByVal
sender
As
System.Object,
_
ByVal e As System.EventArgs) Handles SaveData.Click
If
AuthorData.HasChanges()
Then
Dim
ws
As
New
AuthorsWinClient.localhost.AuthorsService()
ws.Credentials
=
System.Net.CredentialCache.DefaultCredentials
Dim
diffAuthors
As
New
AuthorsWinClient.localhost.authors1()
diffAuthors.Merge(AuthorData.GetChanges())
diffAuthors
=
ws.UpdateAuthors(diffAuthors)
AuthorData.Merge(diffAuthors)
End
If
End Sub
Чтобы выполнить приложение:
В меню Файл выберите пункт Сохранить все.
1. В обозревателе решений выберите объект AuthorsWinClient, щелкните его правой
кнопкой и выберите команду Назначить автозагружаемым проектом.
2. Нажмите клавиши CTRL+F5 для запуска приложения.
Откроется окно, содержащее пустую таблицу с заголовками столбцов таблицы authors в
базе данных Pubs.
3. Нажмите кнопку Load, чтобы заполнить таблицу, внесите какие-либо изменения и
нажмите кнопку Save, чтобы их сохранить.
Мы рассмотрели создание проекта Windows Forms для использования в качестве
Windows-интерфейса. Форма Windows Forms была подключена к веб-службе XML,
созданной в первом разделе, и были использованы элементы управления DataGrid и Button
для создания пользовательского интерфейса для загрузки и обновления данных.
Шаг 7. Создание веб-интерфейса пользователя
Веб-интерфейс позволяет использовать приложение с клиентских компьютеров
различных типов и с помощью различных обозревателей. Все действия по обработке
пользовательского интерфейса выполняются на веб-сервере, а не на клиентском
компьютере. С использованием страницы Web Forms будет создан веб-интерфейс,
осуществляющий доступ к тому же самому бизнес-объекту среднего уровня, к которому
обращается Windows-интерфейс, созданный в предыдущем разделе. Рис.7.9
демонстрирует клиентскую часть, которая будет создана.
Чтобы создать страницу Web Forms:
1. В меню Файл выделите пункт Добавить проект и выберите команду Создать проект.
2. В диалоговом окне Добавление нового проекта выберите в списке Типы проектов папку
Проекты Visual Basic и в списке Шаблоны выберите Веб-приложение ASP.NET.
3. В поле Расположение введите имя веб-сервера (расположенного на компьютере, на
котором осуществляется разработка) с именем проекта,
http://ServerName/AuthorsWebClient, после чего нажмите кнопку ОК.
Рис.7.9. Веб-клиент для распределенного приложения
В обозреватель решений будет добавлен новый проект. Страница Web Forms с именем
WebForm1.aspx будет добавлена к проекту и открыта в конструкторе.
Добавьте веб-ссылку на веб - службу ASP.NET, созданную ранее.
4. В обозревателе решений щелкните правой кнопкой проект AuthorsWebClient и в
контекстном меню выберите команду Добавить веб-ссылку.
5. В поле URL-адрес в верхней части диалогового окна Добавление веб-ссылки введите
расположение проекта веб-службы XML
(http://ServerName/AuthorsWebService/AuthorsService.asmx) и нажмите клавишу ВВОД.
6. Нажмите кнопку Добавить ссылку.
Теперь можно создать в приложении экземпляр набора данных authors1.
Займемся добавлением в веб-страницу элементов управления:
1. С вкладки Данные области элементов перетащите в форму объект DataSet. Откроется
диалоговое окно Выберите Dataset. Выберите параметр Типизированный Dataset и
выберите из списка Имя значение
AuthorsWebClient.ServerName.authors1.
Объект DataSet будет добавлен в область компонентов.
2. Выберите объект DataSet и установите для его свойства Name значение AuthorData.
3. С вкладки Web Forms области элементов перетащите в форму элемент управления
DataGrid.
4. В окне свойств для элемента управления DataGrid установите для свойства DataSource
значение AuthorData, а для свойства DataMember - значение authors.
Эти значения появляются в раскрывающихся списках для данных элементов. Заголовки
столбцов в объекте DataGrid будут установлены в соответствии с названиями столбцов в
таблице authors.
Чтобы обеспечить поддержку редактирования непосредственно в элементе управления
DataGrid, необходимо добавить столбец Правка, Обновить, Отмена, который будет
содержать кнопку Правка. Когда пользователь нажимает кнопку Правка, содержимое
строки будет представлено в виде текстовых полей и кнопка Правка будет заменена
кнопками Обновить и Отмена. Чтобы добавить этот столбец, выполните следующие
действия:
5. Щелкните ссылку Построитель свойств в нижней части окна свойств, после чего
выберите в диалоговом окне вкладку Столбцы.
6. В поле Доступные столбцы разверните элемент Столбец кнопки.
7. Выберите элемент Правка, Обновить, Отмена и нажмите кнопку добавления (>).
8. Нажмите кнопку OK.
Чтобы добавить код для кнопок "Правка", "Обновить" и "Отмена":
9. Щелкните форму правой кнопкой и выберите команду Просмотреть код. Добавьте код
для события Page_Load для заполнения элемента управления DataGrid, как показано ниже.
Этот код создает экземпляр веб-службы XML, заполняет набор данных AuthorData и
привязывает набор данных к элементу управления DataGrid. Каждый раз, когда таблица
загружается пользователем, сетка будет содержать обновленную копию данных из базы
данных. Свойство Credentials веб-службы XML используется для передачи
идентификационных данных веб-службе XML, которая, в свою очередь, передает их
серверу баз данных.
Private
Sub
Page_Load(ByVal
sender
As
System.Object,
_
ByVal e As System.EventArgs) Handles MyBase.Load
Dim
ws
As
New
AuthorsWebClient.localhost.AuthorsService()
ws.Credentials
System.Net.CredentialCache.DefaultCredentials
AuthorData.Merge(ws.GetAuthors())
If
Not
Page.IsPostBack
Me.DataGrid1.DataBind()
End
End Sub
=
Then
If
Когда пользователь нажимает кнопку Правка, вызывается событие EditCommand
компонента DataGrid. Используйте это событие для установки свойства EditItemIndex
элемента управления DataGrid. Строка, указанная в свойстве EditItemIndex, будет
отображена с данными, представленными в виде текстовых полей.
Создайте обработчик события EditCommand.
10. Щелкните страницу правой кнопкой мыши и выберите команду Просмотреть код. В
левом раскрывающемся списке редактора кода выберите DataGrid1. В правом
раскрывающемся списке выберите EditCommand.
11. Добавьте следующий код:
Private Sub DataGrid1_EditCommand(ByVal source As
Object,
_
ByVal
e
As
System.Web.UI.WebControls.DataGridCommandEventArgs)
_
Handles
DataGrid1.EditCommand
DataGrid1.EditItemIndex
=
e.Item.ItemIndex
DataGrid1.DataBind()
End Sub
Создайте обработчик события CancelCommand.
Когда пользователь нажимает кнопку Отмена, вызывается событие CancelCommand
компонента DataGrid. Используйте это событие для присвоения свойству EditItemIndex
значения -1, чтобы снова отобразить текущую строку в виде текста.
12. Добавьте следующий код:
Private Sub DataGrid1_CancelCommand(ByVal source As
Object,
_
ByVal
e
As
System.Web.UI.WebControls.DataGridCommandEventArgs)
_
Handles
DataGrid1.CancelCommand
DataGrid1.EditItemIndex
=
-1
DataGrid1.DataBind()
End Sub
Когда пользователь нажимает кнопку Update, вызывается событие UpdatetCommand
элемента управления DataGrid. Этот метод отвечает за обновление набора данных
AuthorData с использованием изменений, сделанных в элементе управления DataGrid, и
передачу этих изменений обратно в базу данных, используя веб-службу XML. Создайте
обработчик события UpdateCommand.
13. Добавьте следующий код:
Private Sub DataGrid1_UpdateCommand(ByVal source As
Object,
_
ByVal
e
As
System.Web.UI.WebControls.DataGridCommandEventArgs)
_
Handles
DataGrid1.UpdateCommand
'Обновление
каждого
поля
в
строках
DataSet
Dim
i
As
Integer
For
i
=
1
To
AuthorData.authors.Columns.Count
'Коллекция Control возвращает объект типа Control,
поэтому Controls(0) следует преобразовать к типу
TextBox
Dim t As TextBox = CType(e.Item.Cells(i).Controls(0),
TextBox)
Dim
row
As
DataRow
=
AuthorData.authors(e.Item.DataSetIndex)
row(AuthorData.authors.Columns(i - 1).Caption) = t.Text
Next
'Добавим
изменения
в
базу
данных
If
Me.AuthorData.HasChanges()
Then
Dim
ws
As
New
AuthorsWebClient.localhost.AuthorsService()
ws.Credentials
=
System.Net.CredentialCache.DefaultCredentials
Dim
diffAuthors
As
New
AuthorsWebClient.localhost.authors1()
diffAuthors.Merge(Me.AuthorData.GetChanges())
ws.UpdateAuthors(diffAuthors)
AuthorData.Merge(diffAuthors)
End
If
'Выключим режим редактирования для строки и
отобразим
новые
данные
DataGrid1.EditItemIndex
=
-1
DataGrid1.DataBind()
End Sub
Необходимо произвести настройку параметров безопасности проекта для работы со
встроенной системой безопасности. Это осуществляется путем выключения анонимного
доступа.
Чтобы указать для проекта встроенную проверку подлинности Windows, необходимо
внести изменения в файлы проекта и настроить проект с помощью инструмента Internet
Information Services.
14. Запустите инструмент Internet Information Services. Его можно вызвать через
компонент Администрирование на Панели управления. Разверните узел,
соответствующий вашему серверу.
15. Разверните узел Веб-узел по умолчанию.
16. Щелкните правой кнопкой узел AuthorsWebClient и в контекстном меню выберите
команду Свойства.
17. Перейдите на вкладку Безопасность каталога.
18. В группе Анонимный доступ и проверка подлинности нажмите кнопку Изменить.
19. Снимите флажок Анонимный доступ.
20. Установите флажок Встроенная проверка подлинности Windows.
Теперь каталог веб-служб XML настроен.
21. Вернувшись к проекту в Visual Studio, щелкните правой кнопкой мыши файл
Web.config в обозревателе решений.
22. Добавьте следующий тег после тега , чтобы включить поддержку встроенной
безопасности для веб-службы XML.
< identity impersonate="true"/>
Чтобы выполнить приложение:
1. В обозревателе решений выберите проект AuthorsWebClient, щелкните его правой
кнопкой и выберите команду Назначить автозагружаемым проектом.
2. Нажмите клавиши CTRL+F5 для запуска приложения.
Мы добавили к решению проект веб-приложения ASP.NET для использования в качестве
веб-интерфейса для данных. Страница Web Forms была подключена к веб-службе XML,
созданной ранее. Был использован элемент управления DataGrid для создания
пользовательского интерфейса отображения и редактирования данных.
Самостоятельно
Самостоятельно создайте аналогичную Web-службу для подключения к вашей базе
данных, разработайте для ее тестирования в Windows и Web-приложениях.
Download