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: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:output wsdl:operation /wsdl:portType И wsdl:portType /wsdl:operation /wsdl:input сообщения для операции. |
Faults |
Определения wsdl:portType //wsdl:operation wsdl:fault для операции. |
Behaviors |
Поведения DataContractSerializerOperationBehavior и XmlSerializerOperationBehavior отвечают за привязку операции и сообщения операции. |
DataContractSerializerOperationBehavior
Поведение DataContractSerializerOperationBehavior
для операции представляет собой реализацию интерфейса IWsdlExportExtension
, которая экспортирует сообщения и привязку WSDL для данной операции. Типы схемы XML экспортируются с помощью XsdDataContractExporter
. Поведение DataContractSerializerOperationBehavior
также определяет назначение, стиль, а также экспортер и импортер схемы, используемые для данной операции.
Свойства | Сопоставление с WSDL |
---|---|
DataContractFormatAttribute |
Свойство Style этого атрибута сопоставляется со значениемsoap:operation wsdl:binding /wsdl:operation / /@style для операции.DataContractSerializerOperationBehavior поддерживает только литеральное использование типов схемы в WSDL. |
XmlSerializerOperationBehavior
Поведение XmlSerializerOperationBehavior
для операции представляет собой реализацию интерфейса IWsdlExportExtension
, которая экспортирует сообщения и привязку WSDL для данной операции. Типы схемы XML экспортируются с помощью XmlSchemaExporter
. Поведение XmlSerializerOperationBehavior
также определяет назначение, стиль, а также экспортер и импортер схемы, используемые для данной операции.
Свойства | Сопоставление с WSDL |
---|---|
XmlSerializerFormatAttribute |
Свойство Style этого атрибута сопоставляется со значениемsoap:operation wsdl:binding /wsdl:operation / /@style для операции.Свойство Use этого атрибута сопоставляется соsoap:operation wsdl:binding /wsdl:operation / значениями /*/@use для всех сообщений в операции. |
Сообщения
Экземпляр MessageDescription
сопоставляется с wsdl:message
данными, wsdl:portType
//wsdl:operation
wsdl: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:part wsdl:message /@name ссылается параметр "параметры". |
WrapperNamespace |
Если стиль не является RPC, WrapperNamespace то сопоставляется с пространством имен элемента дляwsdl:part wsdl: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:fault
wsdl:portType
wsdl:operation
//. Элемент 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 сообщения об ошибке. |