Compartir a través de


ServiceDescription y referencias WSDL

Este tema describe cómo Windows Communication Foundation (WCF) asigna los documentos del lenguaje de descripción de servicios web (WSDL) a y desde las instancias ServiceDescription.

Asignaciones de ServiceDescription a WSDL 1.1

Puede utilizar WCF para exportar los documentos WSDL desde una instancia ServiceDescription de su servicio. Los documentos WSDL se generan automáticamente para su servicio al publicar los extremos de metadatos.

Además, puede importar instancias ServiceEndpoint, instancias ContractDescription, e instancias Binding desde documentos WSDL mediante el tipo WsdlImporter.

Los documentos de WSDL, exportados mediante WCF, importan cualquier definición de esquema XML utilizada a partir de documentos de esquema XML externos. Se exporta un documento de esquema XML independiente para cada espacio de nombres de destino utilizado por los tipos de datos en el servicio. Igualmente, se exporta un documento WSDL independiente para cada espacio de nombres de destino utilizado por los contratos de servicios.

ServiceDescription

Se asigna una instancia ServiceDescription a un elemento wsdl:service. Una instancia ServiceDescription contiene una colección de instancias ServiceEndpoint en la que cada una se asigna a elementos wsdl:port individuales.

Propiedades Asignación WSDL

Name

El valor wsdl:service/@name para el servicio.

Namespace

El espacio de nombres de destino para la definición wsdl:service del servicio.

Endpoints

Las definiciones wsdl:port del servicio.

ServiceEndpoint

Se asigna una instancia ServiceEndpoint a un elemento wsdl:port. Una instancia ServiceEndpoint contiene una dirección, un enlace y un contrato.

Los comportamientos del extremo que implementan la interfaz IWsdlExportExtension pueden modificar el elemento wsdl:port del extremo al que están adjuntos.

Propiedades Asignación WSDL

Name

El valor wsdl:port/@name del extremo, y el valor wsdl:binding/@name del enlace del extremo.

Address

La dirección para la definición wsdl:port del extremo.

El transporte del extremo determina el formato de la dirección. Por ejemplo, para transportes compatibles con WCF podría ser una dirección de SOAP o una referencia de extremo.

Binding

La definición wsdl:binding del extremo.

A diferencia de las definiciones wsdl:binding, los enlaces en WCF no están asociados con un contrato.

Contract

La definición wsdl:portType del extremo.

Behaviors

Los comportamientos del extremo que implementan la interfaz IWsdlExportExtension pueden modificar wsdl:port del extremo.

Enlaces

La instancia de enlace para una instancia ServiceEndpoint se asigna a una definición wsdl:binding. A diferencia de las definiciones wsdl:binding, que deben estar asociadas a un definición wsdl:portType específica, los enlaces WCF son independientes de cualquier contrato.

Un enlace se compone de una colección de elementos de enlace. Cada elemento describe algún aspecto de cómo el extremo se comunica con los clientes. Además, un enlace tiene una MessageVersion que indica la EnvelopeVersion y la AddressingVersion del extremo.

Propiedades Asignación WSDL

Name

Se utiliza en el nombre predeterminado de un extremo, que es el nombre del enlace al que se anexa el nombre del contrato separado por un guión bajo.

Namespace

targetNamespace para la definición wsdl:binding.

En importación, si una directiva está adjunta al puerto WSDL, el espacio de nombres del enlace importado se asigna a targetNamespace para la definición wsdl:port.

BindingElementCollection, como lo devuelve el método CreateBindingElements().

Varias extensiones específicas del dominio para la definición wsdl:binding, normalmente, las aserciones de directiva.

MessageVersion

EnvelopeVersion y AddressingVersion para el extremo.

Cuando se especifica MessageVersion.None, el enlace de WSDL no contiene un enlace SOAP y el puerto WSDL no incluye contenido de WS-Addressing. Este valor se utiliza normalmente para extremos “XML sin formato” (POX).

BindingElements

Los elementos de enlace de un enlace de extremo se asignan a distintas extensiones WSDL en wsdl:binding, por ejemplo, las aserciones de directiva.

TransportBindingElement del enlace determina la dirección URI del transporte de un enlace SOAP.

AddressingVersion

AddressingVersion de un enlace se asigna a la versión de direccionamiento utilizada en wsd:port. WCF es compatible con direcciones SOAP 1.1 y SOAP 1.2, y con las referencias de extremo de WS-Addressing 08/2004 y WS-Addressing 1.0.

EnvelopeVersion

EnvelopeVersion de un enlace se asigna a la versión de SOAP utilizada en wsdl:binding. WCF es compatible con los enlaces de SOAP 1.1 y SOAP 1.2.

Contratos

La instancia ContractDescription para una instancia ServiceEndpoint se asigna a wsdl:portType. Una instancia ContractDescription describe todas las operaciones de un contrato determinado.

Propiedades Asignación WSDL

Name

El valor wsdl:portType/@name del contrato.

Namespace

El espacio de nombres de destino para la definición wsdl:portType.

SessionMode

El valor wsdl:portType/@ msc:usingSession para el contrato. Este atributo es una extensión WCF para WSDL 1.1.

Operations

Las definiciones wsdl:operation para el contrato.

Operaciones

Una instancia OperationDescription se asigna a wsdl:portType/wsdl:operation. OperationDescription contiene una colección de instancias MessageDescription que describen los mensajes para la operación.

Dos comportamientos de la operación participan considerablemente en la asignación de OperationDescription a un documento WSDL: DataContractSerializerOperationBehavior y XmlSerializerOperationBehavior.

Propiedades Asignación WSDL

Name

El valor wsdl:portType/wsdl:operation/@name para la operación.

ProtectionLevel

Aserciones de protección de la directiva de seguridad adjuntas a los mensajes wsdl:binding/wsdl:operation de esta operación.

IsInitiating

El valor wsdl:portType/wsdl:operation/@msc:isInitiating para la operación. Este atributo es una extensión WCF para WSDL 1.1.

IsTerminating

El valor wsdl:portType/wsdl:operation/@msc:isTerminating para la operación. Este atributo es una extensión WCF para WSDL 1.1.

Messages

Los mensajes wsdl:portType/wsdl:operation/wsdl:input y wsdl:portType/wsdl:operation/wsdl:output para la operación.

Faults

Las definiciones wsdl:portType/wsdl:operation/wsdl:fault para la operación.

Behaviors

DataContractSerializerOperationBehavior y XmlSerializerOperationBehavior están relacionados con el enlace y los mensajes de la operación.

DataContractSerializerOperationBehavior

El DataContractSerializerOperationBehavior de una operación es una implementación IWsdlExportExtension que exporta los mensajes y el enlace WSDL de esa operación. Los tipos del esquema XML se exportan mediante XsdDataContractExporter. DataContractSerializerOperationBehavior también determina el uso y el estilo, así como el exportador e importador del esquema que se utilizarán para esa operación.

Propiedades Asignación WSDL

DataContractFormatAttribute

La propiedad Style de este atributo se asigna al valor wsdl:binding/wsdl:operation/soap:operation/@style de la operación.

DataContractSerializerOperationBehavior solo admite el uso literal de los tipos del esquema en WSDL.

XmlSerializerOperationBehavior

XmlSerializerOperationBehavior de una operación es una implementación IWsdlExportExtension que exporta los mensajes y el enlace WSDL de esa operación. Los tipos del esquema XML se exportan mediante XmlSchemaExporter. XmlSerializerOperationBehavior también determina el uso y el estilo, así como el exportador e importador del esquema que se utilizarán para esa operación.

Propiedades Asignación WSDL

XmlSerializerFormatAttribute

La propiedad Style de este atributo se asigna al valor wsdl:binding/wsdl:operation/soap:operation/@style de la operación.

La propiedad Use de este atributo se asigna a los valores wsdl:binding/wsdl:operation/soap:operation/* @ para todos los mensajes de la operación.

Mensajes

Se asigna una instancia MessageDescription a wsdl:message, al que hace referencia wsdl:portType/wsdl:operation/wsdl:input, o a un mensaje wsdl:portType/wsdl:operation/wsdl:output de una operación. MessageDescription posee un cuerpo y encabezados.

Propiedades Asignación WSDL

Action

La acción de SOAP o de WS-Addressing para el mensaje.

Tenga en cuenta que las operaciones que utilizan la cadena de acción "*" no se representan en WSDL.

Direction

MessageDirection.Input se asigna a wsdl:input.

MessageDirection.Output se asigna a wsdl:output.

ProtectionLevel

Aserciones de protección de la directiva de seguridad adjuntas a las definiciones wsdl:message de este mensaje.

Body

El cuerpo del mensaje.

Headers

Los encabezados del mensaje.

ContractDescription.Name, OperationContract.Name

Al exportar, se utilizan para derivar el valor wsdl:message/@name.

Cuerpo del mensaje

Se asigna una instancia de MessageBodyDescription a las definiciones wsdl:message/wsdl:part para el cuerpo de un mensaje. El cuerpo del mensaje puede ser de estilo ajustado o sencillo.

Propiedades Asignación WSDL

WrapperName

Si el estilo no es RPC, se asigna WrapperName al nombre de elemento al que hace referencia wsdl:message/wsdl:part con el valor @name establecido en "parámetros".

WrapperNamespace

Si el estilo no es RPC, se asigna WrapperNamespace al espacio de nombres del elemento de wsdl:message/wsdl:part con el valor @name establecido en "parámetros".

Parts

Las partes del mensaje de este cuerpo del mensaje.

ReturnValue

El elemento secundario del elemento contenedor, en caso de existir uno (documente con estilo ajustado o RPC), de lo contrario, el primer wsdl:message/wsdl:part del mensaje.

Partes del mensaje

Se asigna una instancia MessagePartDescription a wsdl:message/wsdl:part y al tipo o elemento de esquema XML a los que señala la parte del mensaje.

Propiedades Asignación WSDL

Name

El valor de wsd:message/wsdl:part/@name para la parte del mensaje y el nombre del elemento a los que señala la parte del mensaje.

Namespace

Espacio de nombres del elemento al que señala la parte del mensaje.

Index

Índice de wsdl:message/wsdl:part para el mensaje.

ProtectionLevel

Aserciones de protección de la directiva de seguridad adjuntas a la definición wsdl:message de esta parte del mensaje. La directiva se parametriza para señalar la parte del mensaje específica.

MessageType

El tipo de esquema XML del elemento al que señala la parte del mensaje.

Encabezados de mensajes

Una instancia MessageHeaderDescription es una parte de un mensaje que también se asigna a un enlace soap:header de la parte del mensaje.

Errores

Se asigna una instancia FaultDescription a una definición wsdl:portType/wsdl:operation/wsdl:fault y a su definición wsdl:message asociada. Se agrega wsdl:message al mismo espacio de nombres de destino que su tipo de puerto WSDL asociado. wsdl:message tiene una única parte del mensaje denominada "detalle" que señala al elemento de esquema XML que corresponde al valor de propiedad DefaultType para la instancia FaultDescription.

Propiedades Asignación WSDL

Name

El valor wsdl:portType/wsdl:operation/wsdl:fault/@name para el error.

Namespace

El espacio de nombres del elemento de esquema XML al que señala la parte del mensaje de información acerca del error.

Action

La acción de SOAP o de WS-Addressing para el error.

ProtectionLevel

Aserciones de protección de la directiva de seguridad adjuntas a la definición wsdl:message de este error.

DetailType

El tipo de esquema XML del elemento al que señala la parte del mensaje de información.

Name, ContractDescription.Name, OperationDescription.Name,

Se utiliza para derivar el valor wsdl:message/@name para el mensaje de error.

Vea también

Referencia

System.ServiceModel.Description