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

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

Жанры

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

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

Шрифт:

 ‹/wsdl:port›

 ‹wsdl:port name="CalculatorWebServiceSoap12" binding= "tns:CalculatorWebServiceSoap12"›

‹soap12:address location="http://localhost:1109/CalculatorWebService/Service.asmx" /›

 ‹/wsdl:port›

‹/wsdl:service›

Итак, как видите, WSDL-код, автоматически возвращаемый сервером ITS, не является сверхсложным, но, поскольку WSDL представляет собой грамматику на основе XML, этот код достаточно "многословен". Тем не менее, теперь

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

Замечание. Напомним, что пространство имен System.Web.Services.Description содержит множество типов, которые позволяют программно читать и обрабатывать "сырой" WSDL-код (можете проверить сами, если вас это интересует).

Снова о протоколах связи Web-сервисов XML

Строго говоря, Web-сервисы XML могут использовать для коммуникации любой RPC-протокол (например, DCOM или CORBA). Однако большинство Web-серверов встраивает соответствующие данные в тело HTTP-запроса и переправляет их адресату, используя для этого один из трех базовых способов связи (табл. 25.4).

Хотя каждый из подходов обеспечивает один и тот же результат (вызов Web-метода), от выбора протокола зависит то, какие типы параметров (и типы возвращаемых значений) могут пересылаться между заинтересованными сторонами. Протокол SOAP предлагает наибольшую гибкость, поскольку сообщения SOAP позволяют осуществлять обмен сложными типами данных (а также двоичными файлами) между вызывающей стороной и Web-сервисом XML. Однако для полноты давайте выясним роль стандартных HTTP-методов GET и POST.

Таблица 25.4. Режимы связи Web-сервисов XML

Режим связи Описание
HTTP-метод GET В режиме обмена GET параметры добавляются к строке запроса данного URL
HTTP-метод POST В режиме обмена POST данные встраиваются в заголовок HTTP-сообщения, а не добавляются к строке запроса
SOAP SOAP является протоколом связи, определяющим правила передачи данных и вызова методов в сети с помощью XML

Связь HTTP GET и HTTP POST

Хотя GET и POST кажутся привычными конструкциями, этот метод пересылки недостаточно гибок для обслуживания таких сложных элементов, как структуры и классы. При использовании SET и POST вы можете взаимодействовать с Web-методами, используя только типы, указанные в табл. 25.5.

Таблица 25.5. Типы данных, поддерживаемые методами GET и POST

Типы данных Описание
Перечни GET и POST поддерживают передачу типов System.Enum.NET, поскольку эти типы представляются в виде статических строковых констант
Простые массивы Вы можете использовать массивы любых примитивных типов
Строки GET и POST осуществляют передачу любых числовых данных в виде строковых маркеров. Строка здесь на самом деле обозначает строковое представление среды CLR для таких примитивов, как Int16, Int32, Int64, Boolean, Single, Double, Decimal
и т.д.

По умолчанию HTTP-связь GET и POST не разрешена для удаленного вызова Web-сервисов XML. Однако HTTP-связь POST активизирована для вызова машиной локальных Web-сервисов (на самом деле именно этот режим использует автоматически генерируемая страница тестирования). Эти установки указываются в файле machine.config с помощью элемента ‹protocols›. Вот как выглядит соответствующий фрагмент

‹!-- В файле machine. config -– ›

‹webServices

 ‹protocols›

‹add name="HttpSoap1.2" /›

‹add name="HttpSoap" /›

‹add name="Documentation" /›

‹!-- HTTP GET/POST отключены!
– -›

‹!-- ‹add name="HttpPost''/› --›

‹!-- ‹add name="HttpGet"/› --›

‹!-- Используется страницей тестирования Web-сервиса – -›

‹add name="HttpPostLocalhost" /›

 ‹/protocols›

‹/webServiсes›

Чтобы снова разрешить использование HTTP-методов GET или POST для Web-сервиса, добавьте имена HttpPost и HttpGet в соответствующий локальный файл Web.config.

‹configuration›

 ‹system.web›

‹webServices›

‹protocols›

‹add name="HttpPost"/›

‹add name="HttpGet"/›

‹/protocols›

‹/webServices›

 ‹/system.web›

‹/configuration›

Снова напоминаем, что при использовании стандартных HTTP-методов GET и POST у вас нет возможности строить Web-методы, допускающие использование составных типов (например, DataSet ADO.NET или пользовательский тип структуры) в качестве параметров или возвращаемых значений. Для простых Web-сервисов это ограничение может быть вполне приемлемым. Однако при использовании связи SOAP вы можете строить гораздо более совершенные Web-сервисы XML.

Связь SOAP

Полный анализ возможностей SOAP выходит за рамки этого текста, однако следует понимать, что SOAP нельзя назвать специальным протоколом, который может использоваться наряду с другими существующими протоколами Интернет (HTTP, SMTP и др.). Общая задача SOAP, тем не менее, остается той же: обеспечить независимый от языка и платформы механизм вызова методов, использующих составные типы. Для этого SOAP преобразует каждый метод в сообщение SOAP.

Сообщение SOAP состоит из двух основных секций. Во-первых, есть конверт SOAP, который можно понимать, как абстрактный контейнер для соответствующей информации. Во-вторых, есть правила, которые используются для описания информации в сообщении (размещаемой в теле сообщения SOAP). Необязательная третья секция (заголовок SOAP) может использоваться для того, чтобы указать общую информацию, касающуюся самого сообщения (например, информацию безопасности или транзакции).

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

Печать Пожирателя

Соломенный Илья
1. Пожиратель
Фантастика:
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Печать Пожирателя

Привет из Загса. Милый, ты не потерял кольцо?

Лисавчук Елена
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Привет из Загса. Милый, ты не потерял кольцо?

Мастер 2

Чащин Валерий
2. Мастер
Фантастика:
фэнтези
городское фэнтези
попаданцы
технофэнтези
4.50
рейтинг книги
Мастер 2

Нечто чудесное

Макнот Джудит
2. Романтическая серия
Любовные романы:
исторические любовные романы
9.43
рейтинг книги
Нечто чудесное

Клан

Русич Антон
2. Долгий путь домой
Фантастика:
боевая фантастика
космическая фантастика
5.60
рейтинг книги
Клан

Имя нам Легион. Том 3

Дорничев Дмитрий
3. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Имя нам Легион. Том 3

Запасная дочь

Зика Натаэль
Фантастика:
фэнтези
6.40
рейтинг книги
Запасная дочь

Убивать чтобы жить 7

Бор Жорж
7. УЧЖ
Фантастика:
героическая фантастика
космическая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 7

У врага за пазухой

Коваленко Марья Сергеевна
5. Оголенные чувства
Любовные романы:
остросюжетные любовные романы
эро литература
5.00
рейтинг книги
У врага за пазухой

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

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

Генерал Скала и ученица

Суббота Светлана
2. Генерал Скала и Лидия
Любовные романы:
любовно-фантастические романы
6.30
рейтинг книги
Генерал Скала и ученица

Оцифрованный. Том 1

Дорничев Дмитрий
1. Линкор Михаил
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Оцифрованный. Том 1

Его маленькая большая женщина

Резник Юлия
Любовные романы:
современные любовные романы
эро литература
8.78
рейтинг книги
Его маленькая большая женщина

Хуррит

Рави Ивар
Фантастика:
героическая фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
Хуррит