ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
Шрифт:
Хотя при создании Web-сервиcов XML в рамках платформы .NET
Соответствующий ответ SOAP 1.1 выглядит так.
Утилита командной строки 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 | Указывает протокол, используемый в программном
|
/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:
либо получаться динамически по данному URL с помощью указания суффикса ?wsdl:
После того как wsdl.exe обработает соответствующие XML-элементы, вы получите описания интерфейсов для каждого Web-метода.
Используя эти интерфейсы, вы можете определить класс, реализующий различные методы 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.