Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МСОИ_ГКС_МетРекЛР.doc
Скачиваний:
3
Добавлен:
01.03.2025
Размер:
144.38 Кб
Скачать

1Создание простой Web-службы

Рассмотрим создание несложной Web-службы, умножающей два получен­ных дробных числа.

1.Новый проект создается командой главного меню File > New > Other (Файл > Создать > Другое), на вкладке Delphi for .NET Projects (Проекты Delphi.NET) выби­рается значок ASP.NET Web Senvice Application (Приложение Web-службы ASP- NET).

После нажатия кнопки ОК, как обычно для Web-приложений, укажем название проекта, например WebServicel, и каталог для его хранения. В ката­логе будет создана пара файлов, например WebServicel.asmx и WebServicel. pas.

2.В редакторе Delphi перейдем к файлу WebServicel.pas. По умолчанию в нем автоматически создан метод-пример HelloWorld, который войдет в открытый интерфейс нашей службы. Пока он скрыт в комментариях.

В интерфейсе:

TWebServicel = class(System.Web.Services.WebService)

public

constructor Create;

(*

// Sample Web Service Method

[WebMethod]

function HelloWorld: string; *)

end;

В реализации:

// Sample Web Service Method

// The following method is provided to allow for testing a new web service.

(*

function TWebServicel.HelloWorld: string;

begin

Result := 'HelloWorld';

end;

3. Снимем комментарии с обеих частей, после чего у нас окажется готовая заготовка Web-службы.

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

http://localhost/WebServiceApplicationl/WebServicel.asmx

Здесь считается, что проект размещен в виртуальном каталоге WebServiceApplication.1 Web-сервера. Отклик браузера, если настройки сер­вера выполнены правильно, будет показано в окне браузера.

В этом окне имеется все необходимое для тестирования нашей службы.

4.Добавим к нашей программе новый метод умножения. Назовем его WebMul. Два его параметра будут представлять дробные числа, а возвра­щать метод будет дробное значение, равное их произведению. Перед опи­санием заголовка метода в классе необходимо указать атрибут WebMethod, который сообщает компилятору, что следующий метод может использо­ваться через открытый интерфейс Web-службы:

TWebServicel = class(System.Web.Services.WebService

public

constructor Create;

// Sample Web Service Method

[WebMethod]

function HelloWorld: string;

[WebMethod]

function WebMul(x,у: Double): Double;

end;

Реализация:

function TWebServicel.WebMul(x, y: Double): Double;

begin

Result := x * у ;

end;

5.Обратившись из браузера по указанному выше адресу, рядом со ссылкой HelloWorld мы увидим новую ссылку WebMul. Такая удобная возможность интерактивного просмотра интерфейса Web-службы реализуется соот­ветствующими модулями Web-сервера, ответственными за поддержку протокола SOAP и Web-служб. При щелчке на ссылке WebMul откроется окно проверки метода WebMul с автоматически сгенерированной тестовой формой и наглядными полями, совпадающими по названию с именами параметров тестируемого метода. В нижней его части будут подробно описаны форматы SOAP-запроса и SOAP-ответа, оба в формате XML.

POST /WebServiceApplicationl/WebServicel.asmx

HTTP/1.1

Host: localhost

Content-Type: text/xml; charset=utf-8

Content-Length: length

SOAPAction: "http://tempuri.org/WebMul"

<?xml version="l.0" encoding="utf-8"?>

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://scheraas.xmlsoap.org/soap/envelope/">

<soap:Body>

<WebMul xmlns="http://tempuri.org/"> <x>double</x> <y>double</y> </WebMul>

</soap:Body>

</soap:Envelope>

HTTP/1.1 200 OK

Content-Type: text/xml; charset=utf-8 Content-Length: length

<?xml version="l.0" encoding="utf-8"?>

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns :xsd="http: //www.v?3 .org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

<soap:Body>

<WebMulResponse xmlns="http://tempuri.org/">

<WebMulResult>double</WebMulResult> </WebMulResponse>

</soap:Body>

</soap:Envelope>

Видно, что параметры х и у выступают как названия тегов, а их типы -как значения. По схожей схеме формируется и возвращаемое значение WebMul Result.

6. Введем произвольные значения, не забывая, что дробные числа в полях ввода надо указывать с запятой (если версия Windows русифицирова­на), и нажмем кнопку Invoke дистанционного вызова выбранного мето­да. Результат будет показан в браузере в наглядном формате XML.