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


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

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

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

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

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

В экспортируемые WCF документы WSDL импортируются все используемые определения схемы 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-Addressing 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: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:portTypewsdl:operationwsdl:fault для операции.

Behaviors

Поведения DataContractSerializerOperationBehavior и XmlSerializerOperationBehavior отвечают за привязку операции и сообщения операции.

DataContractSerializerOperationBehavior

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

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

DataContractFormatAttribute

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

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

XmlSerializerOperationBehavior

Поведение 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 для текста сообщения. Тело сообщения может быть заключено в оболочку или передаваться в режиме "bare".

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

WrapperName

Если стиль — не RPC, WrapperName сопоставляется с именем элемента, на которое ссылается wsdl:message/wsdl:part, где @name равно "parameters".

WrapperNamespace

Если стиль — не RPC, WrapperNamespace сопоставляется с пространством имен элемента для wsdl:message/wsdl:part, где @name равно "parameters".

Parts

Части сообщения для данного тела сообщения.

ReturnValue

Дочерний элемент элемента-оболочки, если имеется элемент-оболочка (стиль упакованного документа (document/wrapped), или стиль 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, на которое указывает часть "detail" сообщения ошибки.

Action

Действие SOAP или WS-Addressing для ошибки.

ProtectionLevel

Утверждения защиты в политике безопасности, прикрепленной к определению wsdl:message для этой ошибки.

DetailType

Тип схемы XML элемента, на который указывает часть "detail" сообщения.

Name, ContractDescription.Name, OperationDescription.Name,

Используются для вывода значения wsdl:message/@name для сообщения ошибки.

См. также

Справочник

System.ServiceModel.Description