Чтение онлайн

на главную - закладки

Жанры

ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание

Троелсен Эндрю

Шрифт:

‹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:Header›

‹!-- Необязательная информация заголовка --›

 ‹/soap:Header›

 ‹soap:Body›

 ‹!-- Информация вызова метода --›

 ‹/soap:Body›

‹/soap:Envelope›

Просмотр сообщения SOAP

Хотя при создании Web-сервиcов XML в рамках платформы .NET

от вас не требуется понимания всех деталей SOAP, вы можете увидеть формат сообщения SOAP дня каждого доступного Web-метода с помощью автоматически генерируемой страницы тестирования. Например, если щелкнуть на ссылке для метода Add нашего CalculatorWebService, вы увидите следующий запрос SOAP 1.1.

‹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›

‹Add xmlns="http://www.IntertechTraining.com"›

‹x›int‹/x›

‹y›int‹/y›

‹/Add›

 ‹/soap:Body›

‹/soap:Envelope›

Соответствующий ответ SOAP 1.1 выглядит так.

‹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›

‹AddResponse xmlns="http://www.IntertechTraining.com "›

‹AddResultint‹/AddResult›

‹/AddResponse›

 ‹/soap:Body›

‹/soap:Envelope›

Утилита командной строки wsdl.exe

Теперь, когда у вас есть базовые знания о WSDL и SOAP, давайте выясним, как с помощью такого инструмента командной строки, как wsdl.exe строить программы клиента, взаимодействующие с удаленными Web-сервисами XML. В сущности, wsdl.exe решает две важные задачи.

• Генерирование файла сервера, функционирующего в качестве каркаса для реализации Web-сервиса XML.

Генерирование файла клиента, функционирующего в качестве агента удаленного Web-сервиса XML.

Утилита wsdl.exe поддерживает ряд флагов командной строки, список которых можно увидеть, указав при вызове этой утилиты опцию -? в командной строже. Описания некоторых аргументов wsdl.exe приводятся в табл. 25.6.

Таблица 25.6. Подборка опций wsdl.exe

Флаг командной строки Описание
/appsettingurlkey Дает указание wsdl.exe создать агент, не использующий "жестко" заданные значения URL. Вместо этого класс агента будет настроен на чтение значений URL из файла *.config клиента
/language Указывает язык для использования в генерируемом классе агента: cs (C#; это значение используется по умолчанию), VB (Visual Basic .NET), JS (JScript), VJS (Visual J#)
/namespace Указывает пространство имен для генерируемого агента или шаблона. По умолчанию сам тип в рамках определения пространства имен не определяется
/out Указывает файл, в котором нужно сохранить программный код генерируемого агента. Если файл не указан, имя файла будет соответствовать имени Web-сервиса XML
/protocol Указывает протокол, используемый в программном
коде агента, по умолчанию это SOAP. Но можно также указать HttpGet или HttpPost, чтобы создать агент, использующий для взаимодействия HTTP-методы GET или POST
/serverInterface Генерирует интерфейсные связи сервера для Web-сервиса XML на основе WSDL-документа

Замечание. Флаг /server утилиты wsdl.exe в .NET 2.0 больше не используется. Теперь базовый программный код для сервера генерируется с помощью /serverlnterfасе.

Преобразование WSDL-кода в серверный программный код Web-сервиса

Одним из интересных вариантов использования утилиты wsdl.exe является генерирование серверного программного кода на основе WSDL-документа (с помощью опции /serverInterfасе). Очевидно, если вы начинаете разработку Web-сервиса XML с создания WSDL-документа, эта опция должна быть для вас очень важна. После того как файл исходного кода будет сгенерирован, вы получите хорошую исходную позицию для реализации каждого Web-метода.

Предположим, что вы создали WSDL-документ (CarBizObject.wsdl), в котором описывается единственный метод DeleteCar, получающий на вход целое число и не возвращающий ничего. Этот метод предлагается Web-сервисом XML с именем CarBizObject, который может вызываться с использованием связи SOAP.

Чтобы сгенерировать серверный файл программного кода C# на основе этого WSDL-документа, откройте окно командной строки .NET и вызовите утилиту wsdl.exe с флатом /serverInterface, за которым должно следовать имя соответствующего WSDL-документа. Заметьте, что WDSL-документ может содержаться либо в локальном файле *.wsdl:

wsdl /serverInterface CarBizObject.wsdl

либо получаться динамически по данному URL с помощью указания суффикса ?wsdl:

wsdl /serverInterface http://localhost/CarService/CarBizObject.asmx?wsdl

После того как wsdl.exe обработает соответствующие XML-элементы, вы получите описания интерфейсов для каждого Web-метода.

[System.Web.Services.WebServiceBindingAttribute(

 Name="CarBizObjectSoap",

 Namespace="http://IntertechTraining.com/")]

 public partial interface ICarBizObjectSoap {

 …

 void RemoveCar(int carID);

}

Используя эти интерфейсы, вы можете определить класс, реализующий различные методы Web-сервиса XML.

Исходный код. Файл CarBizObject.wsdl размещен в подкаталоге, соответствующем главе 25.

Преобразование WSDL-кода в программный код агента для клиента

Хотя это и нежелательно, но вполне возможно построить базовый программный код клиента, которым будет вручную открывать HTTP-соединение, строить SOAP-сообщения, вызывать Web-методы и выполнять обратную трансляцию поступающего XML-потока в типы данных CTS. Намного более предпочтительным подходом оказывается использование wsdl.exe для генерирования класса агента, который будет представлять Web-методы, определенные данным файлом *.asmx.

Для этого укажите (как минимум) имя генерируемого файла агента (с помощью флага /out) и место размещения WSDL-документа. По умолчанию wsdl.exe генерирует программный код агента на языке C#. Однако если вы хотите иметь программный код агента на другом языке .NET, вы можете использовать флаг /language. Следует также знать, что по умолчанию wsdl.exe генерирует программный код агента, предполагающего связь с удаленным Web-сервисом XML с помощью SOAP. Чтобы созданный агент использовал HTTP-метод GET или POST. следует указать соответствующий протокол связи с помощью /protocol.

Поделиться:
Популярные книги

Зубных дел мастер

Дроздов Анатолий Федорович
1. Зубных дел мастер
Фантастика:
научная фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
Зубных дел мастер

Бывшие. Война в академии магии

Берг Александра
2. Измены
Любовные романы:
любовно-фантастические романы
7.00
рейтинг книги
Бывшие. Война в академии магии

Идеальный мир для Лекаря 7

Сапфир Олег
7. Лекарь
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 7

Возвышение Меркурия. Книга 3

Кронос Александр
3. Меркурий
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 3

Кодекс Охотника. Книга X

Винокуров Юрий
10. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
6.25
рейтинг книги
Кодекс Охотника. Книга X

Хозяин Теней

Петров Максим Николаевич
1. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Хозяин Теней

Опасная любовь командора

Муратова Ульяна
1. Проклятые луной
Фантастика:
фэнтези
5.00
рейтинг книги
Опасная любовь командора

Друд, или Человек в черном

Симмонс Дэн
Фантастика:
социально-философская фантастика
6.80
рейтинг книги
Друд, или Человек в черном

Волхв

Земляной Андрей Борисович
3. Волшебник
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Волхв

Мастер Разума VII

Кронос Александр
7. Мастер Разума
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Мастер Разума VII

Всемирная энциклопедия афоризмов. Собрание мудрости всех народов и времен

Агеева Елена А.
Документальная литература:
публицистика
5.40
рейтинг книги
Всемирная энциклопедия афоризмов. Собрание мудрости всех народов и времен

Сумеречный Стрелок 5

Карелин Сергей Витальевич
5. Сумеречный стрелок
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сумеречный Стрелок 5

Морской волк. 1-я Трилогия

Савин Владислав
1. Морской волк
Фантастика:
альтернативная история
8.71
рейтинг книги
Морской волк. 1-я Трилогия

Прогрессор поневоле

Распопов Дмитрий Викторович
2. Фараон
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Прогрессор поневоле