Cтраница 3
Несмотря на то что интерфейс обеспечивает вас сведениями о типе параметров, во многих случаях для того, чтобы узнать истинный смысл параметров и то, как они интерпретируются службой, вам потребуется изучить документацию службы. Например, прежде чем обращаться к веб-службе BabelFish, мне потребовалось изучить документацию этой службы, чтобы узнать, с какими языками она работает и каким может быть значение первого параметра главного метода этой службы. [31]
Третьим элементом модуля, сгенерированного мастером WSDL Import Wizard, является глобальная функция, названная так же, как и сервис. Эта функция помогает упростить код, используемый для обращения к веб-службе. Функция GetBabelFishPortType возвращает интерфейс подходящего типа, который можно использовать для обращения к методу напрямую. [32]
Теперь приступим к разработке клиентской программы. Для этого, как обычно, требуется импортировать WSDL-файл, определяющий веб-службу. В данном случае также нужно преобразовать принятые клиентом XML-данные ( а именно список сотрудников, возвращаемый методом GetEmpbyeeNam. [33]
![]() |
Программа FishCiient отображает бинарное содержимое ClientDataSet внутри. [34] |
XML и SOAP лежат в основе подобного взаимодействия, однако этого не достаточно - ключевыми элементами подобной архитектуры являются также стандартизация форматов XML и доступность информации о том или ином предприятии. Без этих ключевых элементов невозможно сформировать какое-либо реально работающее решение в области веб-служб. [35]
Надеюсь, что теперь читатели понимают основную идею, лежащую в основе концепции веб-служб. Но как два совершенно разных компьютера могут взаимодействовать между собой с использованием технологии веб-служб. Протокол SOAP основан на стандарте HTTP, благодаря чему обслуживанием запросов SOAP может заниматься веб-сервер, а соответствующие пакеты данных могут передаваться через брандмауэры. В рамках стандарта SOAP определяется основанный на XML формат запроса на исполнение метода объекта, расположенного на сервере. Стандарт SOAP определяет, каким образом этому методу передаются аргументы, а также каким образом осуществляется возврат результирующих данных. [36]
Компонент ClientDataSet не соединен с провайдером, так как в этом случае он попытался бы открыть файл XML-данных, указанный в трансформации. В нашем случае XML-данные располагаются не в файле - они передаются компоненту после обращения к веб-службе. [37]
ПРИМЕЧАНИЕ - - Многие другие архитектуры веб-служб обеспечивают вас возможностью обратиться к веб-службе через браузер, однако, по сути, эта возможность является бессмысленной, так как основное предназначение веб-службы - это обеспечение взаимодействия между несколькими сетевыми приложениями. Если вы хотите отобразить какие-либо данные в рабочем окне веб-браузера, для этого вовсе не обязательно разрабатывать веб-службу - достаточно построить веб-узел. [38]
В главе 23 обсуждение XML будет продолжено. В ней мы будем обсуждать наиболее интересные и многообещающие технологии, появившиеся в области сетевых технологий за последние несколько лет. Имеются в виду веб-службы. Я расскажу о SOAP и WSDL, кроме того, мы обсудим UDDI и некоторые другие связанные с этим технологии. [39]
Вы можете удивиться, зачем в программе каждый раз создается новый экземпляр модуля данных. Однако существует также преимущество: такой подход хорошо работает в многопоточной среде. Если два запроса к веб-службе обрабатываются в одно и то же время, вы можете использовать общее подключение к базе данных, однако при этом для доступа к данным должны использоваться разные наборы данных. Вы можете переместить наборы данных в код функций и сохранить только подключение к модулю данных или, напротив, использовать глобальный общий модуль данных для подключения ( который используется одновременно несколькими потоками) и специальный экземпляр второго модуля данных, в котором содержатся наборы данных для каждого обращения к методу. [40]
Проблему можно решить при помощи веб-службы: программа, осуществляющая слежение за продажами, может автоматически создать запрос и передать его веб-службе, которая немедленно возвращает информацию о заказе. На данном этапе ваше приложение может использовать другую веб-службу для каждой поставки до тех пор, пока заказанные товары не достигнут места назначения. [41]
С ними связано множество технологий и стандартов. Как и ранее в данной книге, я не собираюсь подробно рассказывать обо всем, что связано с веб-службами. Вместо этого я расскажу о том, каким образом поддержка веб-служб реализована в Delphi, а также о связанных с этим технических сложностях. [42]
Среда разработки Delphi поддерживает множество разнообразных технологий: трехзвенные архитектуры, основанные на Windows NT и DCOM, приложения, основанные на TCP / IP и сокетах, а также веб-службы, основанные на XML и SOAP. В данной главе мы подробно рассмотрим многозвенные архитектуры, предназначенные для доступа к базам данных. Решения, ориентированные на XML, будут рассматриваться нами в главах 22 и 23, которые посвящены XML, SOAP и веб-службам. [43]
Как мы увидели в предыдущем разделе, обращение к веб-службе с использованием Delphi выполняется чрезвычайно просто. Если вы выберете этот вариант, Delphi предложит вам список, сильно напоминающий список, появляющийся на экране при выборе приложения WebBroker. Как правило, веб-служба функционирует на веб-сервере. [44]
С ними связано множество технологий и стандартов. Как и ранее в данной книге, я не собираюсь подробно рассказывать обо всем, что связано с веб-службами. Вместо этого я расскажу о том, каким образом поддержка веб-служб реализована в Delphi, а также о связанных с этим технических сложностях. [45]