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

2Создания клиентской части Web-службы

Помимо создания собственно Web-служб система Delphi предоставляет, конечно, и средства создания клиентов, обращающихся к таким службам. Создаются подобные клиенты весьма просто. Сформируем для начала новое приложение (обычную форму Windows Forms или форму ASP.NET Web).

подготовка описания интерфейса Web-службы

В дальнейшем для обращения клиентских приложений к нашему (или любо­му другому) Web-сервису потребуется WSDL-файл, содержащий описа­ние созданного интерфейса (в нем сейчас один метод умножения и метод Hello World, сгенерированный по умолчанию).

1.Получить этот файл можно обращением:

http://localhost/WebServicel/WebServicel.asmx?wsdl

2.Можно щелкнуть на ссылке Service Description в окне браузера, где мы отла­живали список методов Web-службы (рис. 6.16). В результате в браузере появится XML-текст описания интерфейса, который надо сохранить как WSDL-файл (его расширение должно быть .WSDL),

3.Дадим команду Project > Add Web Reference (Проект > Добавить Web-ссылку) — откроется диалоговое окно так называемого UDDI-браузера Borland. Он позволяет просматривать UDDI-каталоги, хранящие коллекции Web-служб, и выбирать подходящую дистанционную услугу. Мы сейчас укажем WSDL-файл, сформированный в предыдущем примере в ходе создания Web-службы

Теперь нажмем кнопку Add Reference (Добавить ссылку), и описание выбран­ной нам-и Web-службы добавится к проекту. В частности, в папке проекта будет создан каталог WebReferences, а в нем разместится файл .WSDL.

Примечание. С помощью команды Project > Add Web Reference в один проект может быть добавлено множество разных Web-служб (прокси-классов). Эта команда введена специально для быстрого создания многофункциональных приложений и систем, интегрирующих сторонние программы.

При работе с Web-службами надо точно знать, какой конкретно метод интер­фейса Web-сервиса предназначен для вызова службы. В ходе вышеописан­ного процесса в проекте появился модуль WebReferences, который содержит описание класса (подобные классы нередко называются прокси-классами-посредниками), реализующего интерфейс, полученный в формате WSDL.

Просмотрев файл WebReference.WebService1.pas, мы увидим следующие строки.

type

[System.Diagnostics.DebuggerStepThroughAttribute] [System.ComponentModel.DesignerCategoryAttribute('code')] [System.Web.Services.WebServiceBindingAttribute

Web.Service1 =class

(System.Web.Services.Protocols. SoapHttpClientProtocol)

/// <remarks/> public

constructor Create;

/// <remarks/>

[System.Web.Services.Protocols.SoapDocumentMethodAttribute ('http://tempuri.org/HelloWorld', RequestNamespace='http://tempuri.org/',

ResponseNamespace= 'http://tempuri.org/', Use= System.Web. Services.Description.SoapBindingUse.Literal, ParameterStyle= System.Web.Services.Protocols. SoapParameterStyle.Wrapped)]

function HelloWorld: string;

/// <remarks/>

function BeginHelloWorId(callback: System. AsyncCallback,-asyncState: System.Object): System.lAsyncResult;

/// <remarks/>

function SndHelloWorld(asyncResult: System.lAsyncResult): string;

/// <remarks/>

[System.Web.Services.Protocols.SoapDocumentMethodAttribute {'http://tempuri.org/WebMul',

RequestNamespace='http://tempuri.org/', ResponseNamespace= 'http://tempuri.org/',

Use= System.Web.Services.Description.SoapBindingUse. Literal, ParameterStyle= System.Web.Services.Protocols. SoapParameterStyle.Wrapped)]

function WebMul(x: System.Double; y: System.Double); System.Double;

/// <remarks/>

function BeginWebMul(x: System.Double; y: System.Double; callback: System.AsyncCallback,-

asyncState: System.Object); System. IAsyncResuit;

/// <remarks/>

function EndWebMul(asyncResult: System.IAsyncResult): System.Double;

end;

Видно, что здесь описай класс TWebServicel, а в нем имеется метод WebMul.