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


Справочник по 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 сопоставляется с элементом wsdl:service . Экземпляр ServiceDescription содержит коллекцию экземпляров ServiceEndpoint, каждый из которых сопоставляется с отдельными элементами wsdl:port.

Свойства Сопоставление WSDL
Name Значение wsdl:service/@name для службы.
Namespace Целевое пространство имен для 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. Этот параметр обычно используется для обычных старых конечных точек XML (POX).

Элементы привязки

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

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

Адресация

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

КонвертВерсия

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

Контракты

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

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

Операции

Экземпляр OperationDescription сопоставляется с wsdl:portType/wsdl: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:portType / wsdl:operation / wsdl:input и wsdl:portType/wsdl:operation/wsdl:output сообщения для операции.
Faults Определения wsdl:portType/wsdl:operation/wsdl:fault для операции.
Behaviors DataContractSerializerOperationBehavior и XmlSerializerOperationBehavior занимаются привязкой операций и сообщениями об операциях.

Поведение операции DataContractSerializerOperationBehavior

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

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

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

XmlSerializerOperationBehavior (Поведение операции сериализатора XML)

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

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

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

Сообщения

Экземпляр MessageDescription сопоставляется с wsdl:message, на который ссылается wsdl:portType/wsdl:operation/wsdl:input или wsdl:portType/wsdl:operation/wsdl:output сообщение в операции. У 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 тела сообщения. Тело сообщения может содержать оболочку или быть без нее.

Свойства Сопоставление WSDL
WrapperName Если стиль не является RPC, то WrapperName сопоставляется с именем элемента, на который ссылается wsdl:message/wsdl:part, при этом значение @name установлено на "параметры".
WrapperNamespace Если стиль не RPC, то WrapperNamespace сопоставляется с пространством имен элемента для wsdl:message/wsdl:part с установленным значением @name "parameters".
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:portType/wsdl:operation/wsdl:fault и соответствующим wsdl:message определением. Он wsdl:message добавляется в то же целевое пространство имен, что и связанный с ним тип порта WSDL. wsdl:message имеет одну часть сообщения с именем "detail", которая указывает на элемент схемы XML, соответствующий значению свойства DefaultType для экземпляра FaultDescription.

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

См. также