Compartir a través de


ServiceDescription y referencias WSDL

En este tema se describe el procedimiento de Windows Communication Foundation (WCF) para asignar los documentos del lenguaje de descripción de servicios Web (WSDL) a y desde instancias ServiceDescription.

Asignaciones de ServiceDescription a WSDL 1.1

Puede usar WCF para exportar documentos WSDL desde una instancia ServiceDescription para el servicio. Los documentos WSDL se generan automáticamente para su servicio al publicar los puntos de conexión de metadatos.

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

Los documentos WSDL, exportados mediante WCF, importan cualquier definición de esquema XML que se use 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 value del 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 punto de conexión que implementan la interfaz IWsdlExportExtension pueden modificar el elemento wsdl:port del punto de conexión al que están adjuntos.

Propiedades Asignación WSDL
Name El valor wsdl:port/@name del punto de conexión y el valor wsdl:binding/@name del enlace del punto de conexión.
Address La dirección para la definición wsdl:port del punto de conexión.

El transporte del extremo determina el formato de la dirección. Por ejemplo, para transportes compatibles con WCF puede ser una dirección SOAP o una referencia de punto de conexión.
Binding La definición wsdl:binding del extremo.

A diferencia de las definiciones wsdl:binding, los enlaces WCF no están asociados con ningún contrato.
Contract La definición wsdl:portType del extremo.
Behaviors Los comportamientos del punto de conexión que implementan la interfaz IWsdlExportExtension pueden modificar wsdl:port del punto de conexión.

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 asociarse a la 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 puntos de conexión “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 en un enlace se asigna a la versión de direccionamiento usada en wsd:port. WCF admite direcciones SOAP 1.1 y SOAP 1.2 y referencias de punto de conexión de WS-Addressing 08/2004 y de WS-Addressing 1.0.

EnvelopeVersion

EnvelopeVersion en un enlace se asigna a la versión de SOAP usada en wsdl:binding. WCF admite enlaces 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 del 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 de 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 de la operación. Este atributo es una extensión WCF para WSDL 1.1.
IsTerminating El valor wsdl:portType/wsdl:operation/@msc:isTerminating de 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 de la operación.
Faults Las definiciones wsdl:portType/wsdl:operation/wsdl:fault de la operación.
Behaviors DataContractSerializerOperationBehavior y XmlSerializerOperationBehavior están relacionados con el enlace y los mensajes de la operación.

DataContractSerializerOperationBehavior

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/*/@use de todos los mensajes de la operación.

Mensajes

Se asigna una instancia MessageDescription a wsdl:message, al que hace referencia un mensaje wsdl:portType/wsdl:operation/wsdl:input o 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 usan 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 de wsdl:message/wsdl:part con @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 que exista uno (estilo ajustado de documento o estilo 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 apunta el icono del mensaje.

Propiedades Asignación WSDL
Name El valor wsd:message/wsdl:part/@name para el icono del mensaje y el nombre del elemento al que apunta el icono 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 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 usa para derivar el valor wsdl:message/@name para el mensaje de error.

Consulte también