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


ServiceDescription и справочная информация о WSDL

В этом разделе описывается, как Windows Communication Foundation (WCF) сопоставляет документы языка описания веб-служб (WSDL) и из ServiceDescription экземпляров.

Сопоставление ServiceDescription с WSDL 1.1

Вы можете использовать WCF для экспорта документов WSDL из экземпляра ServiceDescription службы. При публикации конечных точек метаданных документы WSDL формируются для службы автоматически.

Также можно импортировать экземпляры ServiceEndpoint, экземпляры ContractDescription и экземпляры Binding из документов WSDL, используя для этого тип WsdlImporter.

Документы WSDL, экспортированные WCF, импортируют все определения схемы XML, используемые из внешних документов схемы XML. Для каждого целевого пространства имен, используемого в типах данных в службе, экспортируется отдельный документ схемы XML. Аналогично, для каждого целевого пространства имен, используемого в контрактах служб, экспортируется отдельный документ WSDL.

ServiceDescription

Экземпляр ServiceDescription сопоставляется с элементом wsdl:service. Экземпляр ServiceDescription содержит коллекцию экземпляров ServiceEndpoint, каждый из которых сопоставляется с отдельным элементом wsdl:port.

Свойства Сопоставление с WSDL
Name Значение wsdl:service/@name для службы.
Namespace Целевое пространство имен (targetNamespace) для определения wsdl:service для службы.
Endpoints Определения wsdl:port для службы.

ServiceEndpoint

Экземпляр ServiceEndpoint сопоставляется с элементом wsdl:port. Экземпляр ServiceEndpoint содержит адрес, привязку и контракт.

Поведения конечной точки, реализующие интерфейс IWsdlExportExtension, могут изменять элемент wsdl:port для конечной точки, к которой они прикреплены.

Свойства Сопоставление с WSDL
Name Значение wsdl:port/@name для конечной точки и wsdl:bindingзначения /@name для привязки конечной точки.
Address Адрес для определения wsdl:port для конечной точки.

Формат адреса определяется транспортом для конечной точки. Например, для транспорта, поддерживаемого WCF, это может быть адрес SOAP или ссылка на конечную точку.
Binding Определение wsdl:binding для конечной точки.

В отличие от wsdl:binding определений, привязки в WCF не привязаны к одному контракту.
Contract Определение wsdl:portType для конечной точки.
Behaviors Поведения конечной точки, реализующие интерфейс IWsdlExportExtension, могут изменять элемент wsdl:port для конечной точки.

Привязки

Экземпляр привязки ServiceEndpoint сопоставляется с определением wsdl:binding. В отличие от wsdl:binding определений, которые должны быть связаны с определенным wsdl:portType определением, привязки WCF не зависят от любого контракта.

Привязка состоит из коллекции элементов привязки. Каждый элемент описывает некоторый аспект взаимодействия конечной точки с клиентами. Кроме того, каждая привязка имеет свойство MessageVersion, которое указывает версию конверта (EnvelopeVersion) и версию адресации (AddressingVersion) для конечной точки.

Свойства Сопоставление с WSDL
Name Используется в имени по умолчанию конечной точки, которое состоит из имени привязки и имени контракта, разделенных символом подчеркивания.
Namespace targetNamespace для определения wsdl:binding.

При импорте, если политика прикреплена к порту WSDL, импортируемое пространство имен привязки сопоставляется с targetNamespace для определения wsdl:port.
BindingElementCollection, возвращаемое методом CreateBindingElements() Различные зависящие от домена расширения определения wsdl:binding, обычно утверждения политики.
MessageVersion EnvelopeVersion и AddressingVersion для конечной точки.

Если задано свойство MessageVersion.None, привязка WSDL не содержит привязки SOAP, а порт WSDL не содержит данных о WS-Addressing. Этот вариант обычно используется для конечных точек POX (передающих сообщения в формате "plain old XML").

BindingElements

Элементы привязки для привязки конечной точки сопоставляются с различными расширениями WSDL в элементе wsdl:binding, такими как утверждения политики.

Элемент TransportBindingElement привязки определяет универсальный код ресурса (URI) для привязки SOAP.

AddressingVersion

Свойство AddressingVersion привязки сопоставляется с версией адресации, используемой в элементе wsd:port. WCF поддерживает адреса SOAP 1.1 и SOAP 1.2, а также ссылки на конечные точки WS-Addresse 08/2004 и WS-Addressing 1.0.

EnvelopeVersion

Свойство EnvelopeVersion привязки сопоставляется с версией адресации протокола SOAP, используемой в элементе wsdl:binding. WCF поддерживает привязки SOAP 1.1 и SOAP 1.2.

Контракты

Экземпляр ContractDescription для экземпляра ServiceEndpoint сопоставляется с элементом wsdl:portType. В экземпляре ContractDescription описываются все операции для данного контракта.

Свойства Сопоставление с WSDL
Name Значение wsdl:portType/@name для контракта.
Namespace Целевое пространство имен (targetNamespace) для определения wsdl:portType.
SessionMode Значение wsdl:portType/@msc:usingSession для контракта. Этот атрибут является расширением WCF для WSDL 1.1.
Operations Определения wsdl:operation для контракта.

Операции

Экземпляр OperationDescription сопоставляется с/wsdl:portTypewsdl:operation . Экземпляр OperationDescription содержит коллекцию экземпляров MessageDescription, которые описывают сообщения для операции.

Два поведения операции играют большую роль в том, как OperationDescription сопоставляется с документом WSDL: DataContractSerializerOperationBehavior и XmlSerializerOperationBehavior.

Свойства Сопоставление с WSDL
Name Значение wsdl:portType/wsdl:operation/@name для операции.
ProtectionLevel Утверждения защиты в политике безопасности, прикрепленной к сообщениям wsdl:binding/wsdl:operation для этой операции.
IsInitiating Значение wsdl:portType/wsdl:operation/@msc:isInitiating для операции. Этот атрибут является расширением WCF для WSDL 1.1.
IsTerminating Значение wsdl:portType/wsdl:operation/@msc:isTerminating для операции. Этот атрибут является расширением WCF для WSDL 1.1.
Messages /wsdl:outputwsdl:operation/wsdl:portTypeИ wsdl:portType/wsdl:operation/wsdl:input сообщения для операции.
Faults Определения wsdl:portType//wsdl:operationwsdl:fault для операции.
Behaviors Поведения DataContractSerializerOperationBehavior и XmlSerializerOperationBehavior отвечают за привязку операции и сообщения операции.

DataContractSerializerOperationBehavior

Поведение DataContractSerializerOperationBehavior для операции представляет собой реализацию интерфейса IWsdlExportExtension, которая экспортирует сообщения и привязку WSDL для данной операции. Типы схемы XML экспортируются с помощью XsdDataContractExporter. Поведение DataContractSerializerOperationBehavior также определяет назначение, стиль, а также экспортер и импортер схемы, используемые для данной операции.

Свойства Сопоставление с WSDL
DataContractFormatAttribute Свойство Style этого атрибута сопоставляется со значениемsoap:operationwsdl:binding/wsdl:operation/ /@style для операции.

DataContractSerializerOperationBehavior поддерживает только литеральное использование типов схемы в WSDL.

XmlSerializerOperationBehavior

Поведение XmlSerializerOperationBehavior для операции представляет собой реализацию интерфейса IWsdlExportExtension, которая экспортирует сообщения и привязку WSDL для данной операции. Типы схемы XML экспортируются с помощью XmlSchemaExporter. Поведение XmlSerializerOperationBehavior также определяет назначение, стиль, а также экспортер и импортер схемы, используемые для данной операции.

Свойства Сопоставление с WSDL
XmlSerializerFormatAttribute Свойство Style этого атрибута сопоставляется со значениемsoap:operationwsdl:binding/wsdl:operation/ /@style для операции.

Свойство Use этого атрибута сопоставляется соsoap:operationwsdl:binding/wsdl:operation/ значениями /*/@use для всех сообщений в операции.

Сообщения

Экземпляр MessageDescription сопоставляется с wsdl:message данными, wsdl:portType//wsdl:operationwsdl:output на которые ссылается wsdl:portType/wsdl:operation/wsdl:input сообщение или сообщение в операции. Экземпляр MessageDescription имеет тело и заголовки.

Свойства Сопоставление с WSDL
Action Действие SOAP или WS-Addressing для сообщения.

Обратите внимание, что операции, в которых используется строка действия "*", не отражаются в документе WSDL.
Direction MessageDirection.Input сопоставляется wsdl:input.

MessageDirection.Output сопоставляется wsdl:output.
ProtectionLevel Утверждения защиты в политике безопасности, прикрепленной к определению wsdl:message для этого сообщения.
Body Текст сообщения для сообщения.
Headers Заголовки для сообщения.
ContractDescription.Name, OperationContract.Name При экспорте используется для получения wsdl:messageзначения /@name.

Текст сообщения

Экземпляр MessageBodyDescription сопоставляется с wsdl:message/wsdl:part определениями текста сообщения. Тело сообщения может быть заключено в оболочку или передаваться в режиме "bare".

Свойства Сопоставление с WSDL
WrapperName Если стиль не является RPC, то сопоставляется с именем элемента, WrapperName на которыйwsdl:partwsdl:message/@name ссылается параметр "параметры".
WrapperNamespace Если стиль не является RPC, WrapperNamespace то сопоставляется с пространством имен элемента дляwsdl:partwsdl:message/@name параметра "параметры".
Parts Части сообщения для данного тела сообщения.
ReturnValue Дочерний элемент элемента оболочки, если элемент-оболочка существует (стиль оболочки документа или стиль RPC), в противном случае первый wsdl:message/wsdl:part в сообщении.

Части сообщения

MessagePartDescription Экземпляр сопоставляется с типом wsdl:message/wsdl:part схемы XML или элементом, на который указывает часть сообщения.

Свойства Сопоставление с WSDL
Name Значение wsd:message/wsdl:part/@name для части сообщения и имя элемента, на который указывает часть сообщения.
Namespace Пространство имен элемента, на который указывает часть сообщения.
Index Индекс wsdl:message/wsdl:part сообщения.
ProtectionLevel Утверждения защиты в политике безопасности, прикрепленной к определению wsdl:message для этой части сообщения. Политика параметризована для указания на конкретную часть сообщения.
MessageType Тип схемы XML элемента, на который указывает часть сообщения.

Заголовки сообщений

Экземпляр MessageHeaderDescription представляет собой часть сообщения, которая также сопоставляется с привязкой soap:header для части сообщения.

Ошибки

Экземпляр FaultDescription сопоставляется с определением и соответствующим wsdl:message определениемwsdl:faultwsdl:portTypewsdl:operation//. Элемент wsdl:message добавляется в то же целевое пространство имен, что и связанный с ним тип порта WSDL. Элемент wsdl:message имеет одну часть сообщения с именем "detail", которая указывает на элемент схемы XML, соответствующий значению свойства DefaultType для экземпляра FaultDescription.

Свойства Сопоставление с WSDL
Name Значение wsdl:portType//wsdl:operationwsdl:fault/@name для сбоя.
Namespace Пространство имен элемента схемы XML, на которое указывает часть "detail" сообщения ошибки.
Action Действие SOAP или WS-Addressing для ошибки.
ProtectionLevel Утверждения защиты в политике безопасности, прикрепленной к определению wsdl:message для этой ошибки.
DetailType Тип схемы XML элемента, на который указывает часть "detail" сообщения.
Name, ContractDescription.Name, OperationDescription.Name, Используется для получения wsdl:messageзначения /@name сообщения об ошибке.

См. также