Главная » Delphi » Технология создания простой Web-службы

0

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

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

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

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

Рис. 6.15. Выбор типа проекта

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

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

public

constructor Create; <*

// Sample Web Service Method [WebMethod]

function HelloWorld: string;

[1]

end;

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

// Sample Web Service Method

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

function TWebServicel.HelloWorld: etring; begin

Result := ‘HelloWorld'; end; *)

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

Рис. 6.16. Web-служба в действии

http://localhost/WebServiceApplicationl/WebServicel.asmx

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

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

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): Doubles- begin

Result := x * у ; end;

5. Обратившись из браузера по указанному выше адресу, рядом со ссылкой HelloWorld мы увидим новую ссылку WebMul. Такая удобная возможность интерактивного просмотра интерфейса Web-службы реализуется соответствующими модулями Web-cepeepa, ответственными за поддержку протокола 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://schemas.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.w3.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>

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

Рис. 6.17. Проверка Web-калькулятора

Рис. 6.18. Результат вычислений представлен в формате XML

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

Бобровский С. И. Технологии Delphi 2006. Новые возможности. — СПб.: Питер, 2006. — 288 е.: ил.

По теме:

  • Комментарии