|
||
|
||
Веб-сервисы и SOAP |
||
Веб-сервисы и SOAP призваны решить проблемы кросс-платформенного взаимодействия приложений. Статья поможет получить представление об этих новых перспективных технологиях. Валентин Колесов Что такое SOAPВ настоящее время используемые технологии удаленного вызова методов (DCOM, CORBA/IIOP и RMI) довольно сложны в настройке и организации взаимодействия. Это влечет за собой проблемы в эксплуатации и функционировании распределенных систем (проблемы безопасности, транспорт через брандмауэры и т.д.). Существующие проблемы успешно решены созданием SOAP (Simple Object Access Protocol), простого протокола, основанного на XML, для обмена сообщениями в распределенных средах (WWW). Он предназначен для создания веб-сервисов и удаленного вызова методов. SOAP можно использовать с разными транспортными протоколами, включая HTTP, SMTP и т.д. Что такое веб-сервисыВеб-сервисы - это функциональность и данные, предоставляемые для использования внешними приложениями, которые работают с сервисами посредством стандартных протоколов и форматов данных. Веб-сервисы полностью независимы от языка и платформы реализации. Технология веб-сервисов является краеугольным камнем программной модели Microsoft .NET. Для демонстрации возможностей SOAP я использовал недавно вышедшую реализацию SOAP Toolkit версии 2.0 от Microsoft. Следует заметить, что текущая версия Toolkit заметно отличается от предыдущей (Microsoft SOAP Toolkit for Visual Studio 6.0) и от бета версии SOAP Toolkit 2.0. Механизм взаимодействия клиента и сервера
WSDL файл это документ в формате XML, описывающий методы, предоставляемые веб-сервисом. Также параметры методов, их типы, названия и местонахождение Listener`а сервиса. SOAP Toolkit визард автоматически генерирует этот документ. Фрагмент WSDL файла: ... <message name=" SOAPClass.SubtractNumbersResponse"> <part name="Result" type="xsd:double" /> </message> <message name=" SOAPClass.AddNumbers"> <part name="NumberOne" type="xsd:double" /> <part name="NumberTwo" type="xsd:double" /> </message> <message name=" SOAPClass.AddNumbersResponse"> <part name="Result" type="xsd:double" /> </message> ... SOAP Envelope (Пакет) - XML документ, который содержит в себе запрос/ответ на выполнение метода. Удобнее всего рассматривать его как почтовый конверт, в который вложена информация. Тэг Envelope должен быть корневым элементом пакета. Элемент Header не обязателен, а Body должен присутствовать и быть прямым потомком элемента Envelope. В случае ошибки выполнения метода сервер формирует пакет, содержащий в тэге Body элемент Fault, который содержит подробное описание ошибки. Если вы пользуетесь высокоуровневыми интерфейсами SOAPClient, SOAPServer, то вам не придется вдаваться в тонкости формата пакета, но, при желании, можно воспользоваться низкоуровневыми интерфейсами или же вообще создать пакет «руками». Объектная модель SOAP Toolkit дает возможность работать с объектами низкоуровневого API:
Используя объекты высокоуровневого API можно передавать данные только простых типов (int, srting, float …), но спецификация SOAP 1.1 допускает работу с более сложными типами данных, например с массивами, структурами, списками и их комбинациями. Для работы с такими типами приходится использовать интерфейсы IsoapTypeMapper и SoapTypeMapperFactory. Пример Для работы серверного приложения потребуются IIS 5 на Windows 2000 или IIS4 на Windows NT 4.0 Service Pack 6. Установленный SOAP Toolkit версии 2.0 Требования клиентского приложения - Microsoft® Windows® 98, Microsoft Windows ME, Microsoft Windows NT® 4.0 Service Pack 6 или Microsoft Windows 2000 Service Pack 1. Установленный SOAP Toolkit версии 2.0 Создание сервераОткройте в VB новый проект ActiveX DLL. Измените название класса на SOAPClass, а имя проекта на SOAPProj. В классе создайте следующие методы: Public Function AddNumbers(ByVal NumberOne As Double,
_ Откомпилируйте DLL. Теперь запустите приложение WSDL Generator (wsdlgen.exe). Сообщите визарду, как вы хотите назвать сервис, например SOAPService, затем укажите путь к только что созданному объекту. Теперь можно выбрать методы, которые войдут в веб-сервис. Мы выберем все методы. Затем нужно указать, где будет находиться веб-приложение, например http://wsd010/soap/, тип Listener`а (может быть ASP и ISAPI) выберем ASP, формат схемы (по умолчанию). Укажем путь, где будут находиться файлы описания веб-сервиса и кодировку. Теперь в веб-каталоге появились файлы ASP, WSDL и WSML это Listener и описания сервиса. Теперь нужно настроить права доступа к веб-приложению – желательно NT Challenge/Response authentication. На этом работы по созданию сервера закончены. Создание клиентаОткройте в VB новый проект Standard EXE. В меню Project/References сделайте ссылку на библиотеку Microsoft SOAP type library. Создайте на форме кнопку, в обработчике нажатия кнопки напишите следующий код: Dim SoapClient As New SoapClient Не забудьте изменить название сервера. После создания объекта SOAPClient его надо инициализировать – указать путь к документу описания веб-сервиса. После инициализации у объекта появятся методы веб-сервиса. И с ними можно работать как с обычным COM объектом. Воспользовавшись замечательной утилитой MsSoapT.exe, входящей в Toolkit, можно просматривать пакеты от клиента серверу и обратно в реальном времени. Для этого надо в WSDL файле найти тэг <soap:address> и вместо строки типа http://soap.server.com/soap/ SOAPService.ASP написать http://soap.server.com:8080/ soap/SOAPService.ASP то есть указать порт 8080. После этого запускаем утилиту трассирования и соглашаемся с настройками по умолчанию, затем создаем новый Formatted Trace. Теперь все SOAP пакеты работы с веб-сервисом можно просматривать on-line. Когда трассировщик не загружен, то в <soap:address> нужно убрать указание порта 8080. Пакет запроса на выполнение метода SubstractNumbers <?xml version="1.0" encoding="UTF-8"
standalone="no" ?> Пакет ответа на выполнение метода SubstractNumbers <?xml version="1.0" encoding="UTF-8"
standalone="no" ?> Пакет сервера, в ответ на запрос некорректного формата <?xml version="1.0" encoding="UTF-8"
standalone="no" ?> Линки по теме: Источник (оригинал)- SoftТерра, http://www.softerra.ru
|
||
|
||
Copyright © "Internet Zone", http://www.izcity.com/, info@izcity.com |