Поделиться через


Использование языка WSDL

В будущей версии Microsoft SQL Server эта возможность будет удалена. Избегайте использования этой возможности в новых разработках и запланируйте изменение существующих приложений, в которых она применяется.

Язык описания веб-служб (WSDL) определяет веб-интерфейс для любых функций RPC, расположенных на конечной точке HTTP, а также описывает возможности пакетов SQL для конечной точки. Клиент может запрашивать WSDL-ответ с экземпляра SQL Server и создавать с его помощью пакетные запросы RPC и SQL на сервере с использованием конечных точек HTTP, настроенных для поддержки WSDL-типа. Фактически, ответ WSDL является динамическим формируемым XML-документом, основанным на функциях RPC, связанных с конечной точкой на момент запроса.

ПримечаниеПримечание

Общие сведения о языке WSDL см. в спецификации WSDL 1.1, доступной на веб-узле W3C по адресу http://www.w3c.org.

На конечных точках HTTP с поддержкой языка WSDL может быть указана одна из приведенных ниже конфигураций языка WSDL для работы с клиентами, отправляющими запросы WSDL:

  • язык WSDL по умолчанию;

  • пользовательский язык WSDL.

Если настройкой предусмотрено использование языка WSDL по умолчанию, SQL Server предлагает поддержку двух типов языка WSDL: по умолчанию (или расширенный) и упрощенный формат языка WSDL.

Хотя в любом из этих WSDL-документов описаны методы, поддерживаемые на конечной точке, язык WSDL по умолчанию применяет дополнительные функции XML-схемы (XSD), позволяющие расширить описание методов, типов данных, параметров и возвращаемых значений на конечной точке.

Упрощенный формат языка WSDL, который может понадобиться для обеспечения совместимости низкого уровня с другими клиентами, применяет простую XSD-схему, которая требует только простейшие типы данных. Если ни расширенный, ни упрощенный форматы языка WSDL не обеспечивают содержимое WSDL-документа таким образом, чтобы оно подходило для конкретного клиента, то можно путем обновления сервера получить подходящую пользовательскую версию языка WSDL.

WSDL-ответы формируются и возвращаются экземпляром SQL Server, используя первоначальное соединение с конечной точкой HTTP с помощью клиента веб-служб, который передает WSDL-запрос.

Поддержка языка WSDL в SQL Server

Если конечная точка определена, то с помощью аргумента WSDL в инструкции Transact-SQLCREATE ENDPOINT указывается, будет ли сервер формировать и возвращать WSDL-ответ для конечной точки, чтобы описать ее программируемые веб-функции. Если конечная точка установлена с помощью значения WSDL=NONE, то сервер не будет возвращать WSDL-ответ.

Если указано формирование с помощью языка WSDL по умолчанию, например при создании конечной точки было указано значение WSDL=DEFAULT, то формат WSDL-документа, возвращаемого сервером, будет зависеть от строки URL-адреса, которую клиент использует для подключения к конечной точке HTTP. Для запроса WSDL-документа клиент может использовать URL-адрес в одном из следующих форматов:

  • Язык WSDL по умолчанию

    Это полная версия расширенного WSDL-ответа, возвращаемого при подключении к конечной точке с помощью URL-адреса http://server/endpoint_path?wsdl. В этом формате используются типы на основе схемы XSD, обеспечивающие поддержку сопоставления для более сложных типов SQL. Дополнительные сведения см. в разделе WSDL-документ по умолчанию.

  • Простой язык WSDL

    Это краткая упрощенная версия языка WSDL по умолчанию, в которой все системные типы данных SQL Server сопоставляются собственным типам XSD. Этот формат возвращается при использовании для подключения к конечной точке URL http://server/endpoint_path?wsdlsimple. Дополнительные сведения см. в разделе Простой язык WSDL.

  • Пользовательский язык WSDL

    Если версия языка WSDL, возвращаемая экземпляром SQL Server, либо версия по умолчанию или упрощенная версия является неприемлемой для клиентов, то можно указать пользовательский язык WSDL. Этот параметр требует создания и реализации дополнительного кода. В этом случае хранимую процедуру можно применять для создания и последующего возврата пользовательского WSDL-содержимого клиентам, у которых в запросе на основе HTTP указан пользовательский тип языка WSDL. Дополнительные сведения см. в разделе Реализация поддержки пользовательского формата WSDL.

Содержимое WSDL-документа

Экземпляр WSDL-документа является XML-документом с корневым элементом <definitions>, указывающим пространство имен языка WSDL (https://schemas.xmlsoap.org/wsdl) и определяющим набор веб-служб в качестве коллекции сетевых конечных точек (портов). В обычном WSDL-документе структура верхнего уровня выглядит следующим образом:

<wsdl:definitions>  <wsdl:types>...</wsdl:types>  <wsdl:message>...<wsdl:message/>  <wsdl:portType>...</wsdl:portType>  <wsdl:binding>...</wsdl:binding>  <wsdl:service>...<wsdl:service><wsdl:definitions>

Как показано в этом упрощенном представлении формата WSDL, с помощью нескольких элементов обозначаются главные разделы WSDL-документа. Роль каждого из них кратко описана в следующей таблице.

Элемент

Описание

wsdl:types

Элемент-контейнер определений типов данных, созданных с помощью XML-схемы (XSD) или другой аналогичной системой для типов данных.

wsdl:message

Определение данных сообщения, с которыми устанавливается связь. Сообщение может состоять из нескольких частей, и эти части могут быть разных типов.

wsdl:portType

Абстрактный набор операций, поддерживаемых одной или несколькими конечными точками.

wsdl:binding

Конкретная спецификация протокола и формата данных для определенного типа порта.

wsdl:service

Коллекция связанных конечных точек.

Системные хранимые процедуры, применяемые для поддержки языка WSDL

Следующие системные хранимые процедуры включены в собственные веб-службы с поддержкой XML в SQL Server для поддержки реализации языка WSDL по умолчанию и упрощенного, а также вызываются в ответ на запрос для языка WSDL:

  • sp_http_generate_wsdl_defaultcomplexorsimple

  • sp_http_generate_wsdl_defaultsimpleorcomplex

  • sp_http_generate_wsdl_complex

  • sp_http_generate_wsdl_simple

Для выполнения хранимых процедур необходимо быть членом роли public. Все эти хранимые процедуры запрашивают в каталогах сведения о дополнительных хранимых процедурах, доступных через конечные точки в качестве веб-методов. Пользователям требуются только разрешения на выполнение этих хранимых процедур веб-методов. Дополнительные сведения см. в разделе Открытие доступа к программируемым функциям SQL через Интернет.