Простой язык WSDL
Простой язык WSDL формирует усеченную версию WSDL-документа, который замещает типы данных примитивов XSD для системных типов SQL Server 2005, которые подробно описаны в разделе Язык WSDL по умолчанию. Хотя простой язык WSDL использует все типы данных SQL Server, которые полностью поддерживаются в языке WSDL по умолчанию, он упрощает процесс подготовки работоспособных WSDL-документов клиентами и генераторами классов-посредников, которые не способны отображать все аспекты языка WSDL по умолчанию и его системой типов, а также управлять этими аспектами и системой типов.
Отличия простого языка WSDL и языка WSDL по умолчанию
Главная причина поддержки двух форматов WSDL заключается в том, что простой язык WSDL предназначен для обратной совместимости и поддержки клиентов SOAP, которые не понимают формата языка WSDL по умолчанию.
Речь идет о простых клиентах веб-служб вроде тех, которые основаны на SOAP Toolkit. Эти клиенты не способны интерпретировать документ языка WSDL по умолчанию в том виде, в котором он создан экземпляром SQL Server. Это ограничение возникает потому, что SOAP Toolkit и другие простые клиенты веб-служб не интерпретируют сложность некоторых системных типов SQL Server 2005. Поэтому, чтобы обойти ограничения простых и старых клиентов, простой язык WSDL содержит все элементы типов SQL Server, сопоставленные со встроенными типами XSD.
Например клиент SOAP Toolkit имеет проблемы при интерпретации типа sqltypes:money из-за гранулярности определения элементов totalDigits
и fractionDigits
, а также других элементов, производных от исходных типов XSD. Однако клиент SOAP Toolkit прекрасно обрабатывает прямое сопоставление типов XSD, например типа данных int
.
Производные типы (язык WSDL по умолчанию)
<xsd:simpleType name="money">
<xsd:restriction base="xsd:decimal">
<xsd:totalDigits value="19">
</xsd:totalDigits>
<xsd:fractionDigits value="4">
</xsd:fractionDigits>
<xsd:maxInclusive value="922337203685477.5807">
</xsd:maxInclusive>
<xsd:minInclusive value="-922337203685477.5808">
</xsd:minInclusive>
</xsd:restriction>
</xsd:simpleType>
Прямое сопоставление (простой язык WSDL)
<xsd:simpleType name="int">
<xsd:restriction base="xsd:int">
</xsd:restriction>
</xsd:simpleType>
Еще один пример — ответ RPC. Простой язык WSDL устанавливает тип ответа в SqlResultStream. Это дополнительно определено в его разделе «Types». Тип ответа же установлен в универсальный тип <xsd:complexType>, который определяет тип <xsd:any>, что допускает наличие произвольного содержимого. Такое изменение WSDL-документа позволяет простому клиенту веб-службы обойти неспособность выполнять синтаксический анализ производных типов ответов SQL Server.
Примечание. |
---|
Запросы на языке WSDL не могут участвовать в SOAP-сеансе. Дополнительные сведения о SOAP-сеансах см. в разделе Работа с сеансами SOAP. |
Сопоставление типов SQL Server и типов XSD для простого языка WSDL
Дополнительные сведения о том, как системные типы данных SQL Server сопоставлены типам XML Schema (XSD) для простого языка WSDL, см. в разделе Сопоставления типов данных в собственных веб-службах с поддержкой XML.
См. также
Справочник
WSDL-документ по умолчанию
Реализация поддержки пользовательского формата WSDL