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