Web службы, средствами Delphi

advertisement
Из цикла лекций «Internet-технологии разработки приложений» для студентов 4-го курса кафедры Компьютерных
технологий физического факультета Донецкого национального университета
Web-службы
(Web-сервисы)
введение
Разработка в среде Delphi
ДонНУ, кафедра КТ, проф.В.К.Толстых
Delphi for .NET
Получаем файлы:
WebService1.asmx,
WebService1.pas,
WebService1.bdsproj...
Файл WebService1.asmx
- где содержится
описание класса для
данной страницы
Новый класс TWebService1 в
пространстве имен
WebService1
Файл содержит только одну строку. Директива WebService указывает на
реализацию кода в отдельном файле WebService1.pas языка С#.
Указанная страница должна быть скомпилирована (CTRL+F9) в сборку
WebServiceApplication1.dll и помещена в папку \bin данной Web-службы.
Файл
WebService1.pas
Компиляция и
тестирование Web-службы
После компиляции в виртуальном каталоге WebServiceApplication1
Web-сервера должны быть два обязательных «рабочих» файла:
WebService1.asmx,
bin/WebServiceApplication1.dll
Тестирование Webслужбы WebService1
Добавление описаний к
Web-службе
Ваш уникальный логический
идентификатор пространства имен
Web-службы. Принято –
домен компании / имя службы
Результат
тестирования
службы:
Использование Web-служб
Клиентами Web-служб могут быть любые приложения – Win32, .NET
и другие платформы.
Создание клиента Win32 (Delphi 6, 7…) –
Project1.exe
Добавляем на форму компонент
THTTPRIO – аналог прокси-класса
(посредник общения с Web-службой)
Создание и добавление WSDL Importer –
модуля импорта для удаленного вызова объекта
Адрес XML-файла описания службы - WSDL:
http://www.donnu.edu.ua/WebServiceApplication1/WebService1.asmx?WSDL
(параметр WSDL запроса позволяет получить XML-файл WSDL)
Добавлен модуль
WebService1.pas
Был создан тип объекта для
доступа к Web-службе и
метод этого объекта
Настройки THTTPRIO1
1.
2.
3.
Повторно вставить адрес WSD в свойство WSDLLocation
Выбрать единственный параметр TWebService1 в Service
Выбрать единственный параметр TWebService1Soap в Port
Обработка щелчка на кнопке «Запрос службы»
Создаем объект WS для работы со
службой (тип объекта взят из
модуля WebSeervice1, убедитесь,
что этот модуль подключен к
главному модулю в uses)
Приводим объект
THTTPRIO1 к типу
TWebSdervice1Soap
Вызываем метод
HelloWorld() Web-службы
Запуск
приложения
Project1.exe
При первом вызове через 2 секунды, далее мгновенно...
Web-служба сложения двух
вещественных чисел
Добавляем новый метод Add()
Описываем новый метод Add()
Тестируем Web-службу с
новым методом
Использование Web-службы
сложения двух вещественных чисел
Изменения модуля Unit1.pas:
Вызываем метод
Add() Web-службы
Обновляем (удаляем старый и ставим заново) модуль –
WSDL Importer импорта для удаленного вызова объекта 
«видим» новый метод Add()
Создание клиента .NET
(Delphi 8, 2005…)
Подготовить и сохранить
внешний вид приложения
ProjectAdd
Для создания прокси-класса,
в инспекторе объектов щелкнуть
правой кнопкой мыши на проекте и
выбрать Add Web Reference
Создание прокси-класса
Выбрать ссылку на
WSDL Web-службы
Добавить ссылку в
проект
Справочная информация WSDL в
формате XML о Web-службе на
www.donnu.edu.ua
Описание интерфейса
Web-службы
в формате XML
В папке Web References\ua.edu.donnu.www
появляется файл WebService1.pas –
исходный код прокси-класса
Исходный код прокси-класса
(Web References\ua.edu.donnu.www WebService1.pas)
Синхронный способ вызова
метода HelloWorld()
Создание динамического массива
Исходный код прокси-класса (продолжение)
Асинхронный способ вызова
метода HelloWorld()
Синхронный способ вызова
метода Add()
Создание динамического массива
Исходный код прокси-класса (продолжение)
Асинхронный способ
вызова метода Add()
Применение Web-службы
Подключение модуля
donnu.WebService1 к
главному модулю:
Обработчик события щелчка на кнопке:
Неоходим объект WS для работы со
службой (тип объекта взят из модуля
donnu.WebService1)
Асинхронный вызов метода
Определяет состояние
асинхронной операции
Начать асинхронную операцию.
Здесь возвращается интерфейса
IAsyncResult
Остановить приложение, если
асинхронная операция еще не
завершилась. AsyncWaitHandle - это
свойство IAsyncResult
Возвращает данные метода Add()
Download