Partager via


Référence pour ServiceDescription et WSDL

Cette rubrique décrit comment Windows Communication Foundation (WCF) mappe des documents WSDL (Web Services Description Language) à des instances ServiceDescription et depuis ces instances.

Comment ServiceDescription mappe à WSDL 1.1

Vous pouvez utiliser WCF pour exporter des documents WSDL à partir d'une instance ServiceDescription pour votre service. Des documents WSDL sont automatiquement générés pour votre service lorsque vous publiez des points de terminaison de métadonnées.

Vous pouvez également importer des instances ServiceEndpoint, des instances ContractDescription et des instances Binding à partir de documents WSDL en utilisant le type WsdlImporter.

Les documents WSDL, exportés par WCF, importent toute définition de schéma XML utilisée à partir de documents de schéma XML externes. Un document de schéma XML distinct est exporté pour chaque espace de noms cible utilisé par les types de données dans le service. De même, un document WSDL distinct est exporté pour chaque espace de noms cible utilisé par les contrats de service.

ServiceDescription

Une instance ServiceDescription correspond à un élément wsdl:service. Une instance ServiceDescription contient une collection d'instances ServiceEndpoint qui correspondent chacune à des éléments wsdl:port individuels.

Propriétés Mappage WSDL

Name

Valeur wsdl:service/@name du service.

Namespace

TargetNamespace de la définition wsdl:service du service.

Endpoints

Définitions wsdl:port du service.

ServiceEndpoint

Une instance ServiceEndpoint correspond à un élément wsdl:port. Une instance ServiceEndpoint contient une adresse, une liaison et un contrat.

Les comportements de point de terminaison qui implémentent l'interface IWsdlExportExtension peuvent modifier l'élément wsdl:port du point de terminaison auquel ils sont attachés.

Propriétés Mappage WSDL

Name

Valeur wsdl:port/@name du point de terminaison et valeur wsdl:binding/@name de la liaison de point de terminaison.

Address

Adresse de la définition wsdl:port du point de terminaison.

Le transport du point de terminaison détermine le format de l'adresse. Par exemple, pour les transports pris en charge par WCF, il peut s'agir d'une adresse SOAP ou d'une référence à un point de terminaison.

Binding

Définition wsdl:binding du point de terminaison.

À la différence des définitions wsdl:binding, les liaisons dans WCF ne sont pas liées à un contrat quel qu'il soit.

Contract

Définition wsdl:portType du point de terminaison.

Behaviors

Les comportements de point de terminaison qui implémentent l'interface IWsdlExportExtension peuvent modifier l'élément wsdl:port du point de terminaison.

Liaisons

L'instance de liaison d'une instance ServiceEndpoint correspond à une définition wsdl:binding. Contrairement aux définitions wsdl:binding, qui doivent être associées à une définition wsdl:portType spécifique, les liaisons WCF sont indépendantes de tout contrat.

Une liaison est composée d'une collection d'éléments de liaison. Chaque élément décrit un aspect de la façon dont le point de terminaison communique avec les clients. En outre, une liaison a un MessageVersion qui indique le EnvelopeVersion et le AddressingVersion du point de terminaison.

Propriétés Mappage WSDL

Name

Utilisé dans le nom par défaut d'un point de terminaison, qui est le nom de liaison auquel est ajouté le nom du contrat séparé par un trait de soulignement.

Namespace

targetNamespace de la définition wsdl:binding.

Lors de l'importation, si une stratégie est jointe au port WSDL, l'espace de noms de liaison importé correspond à l'targetNamespace de la définition wsdl:port.

BindingElementCollection, telle que retournée par la méthode CreateBindingElements()

Différentes extensions propres au domaine de la définition wsdl:binding, généralement des assertions de stratégie.

MessageVersion

EnvelopeVersion et AddressingVersion du point de terminaison.

Lorsque MessageVersion.None est spécifié, la liaison WSDL ne contient pas de liaison SOAP et le port WSDL n'a pas de contenu WS-Addressing. Ce paramètre est généralement utilisé pour les points de terminaison POX (Plain Old XML).

BindingElement

Les éléments de liaison d'un point de terminaison de liaison correspondent à différentes extensions WSDL dans la définition wsdl:binding, comme des assertions de stratégie.

Le TransportBindingElement de la liaison détermine l'URI (Uniform Resource Identifier) de transport d'une liaison SOAP.

AddressingVersion

La AddressingVersion d'une liaison correspond à la version d'adressage utilisée dans la définition wsd:port. WCF prend en charge les adresses SOAP 1.1 et SOAP 1.2, de même que les références de point de terminaison WS-Addressing 08/2004 et WS-Addressing 1.0.

EnvelopeVersion

La EnvelopeVersion sur une liaison correspond à la version de SOAP utilisée dans la définition wsdl:binding. WCF prend en charge les liaisons SOAP 1.1 et SOAP 1.2.

Contrats

L'instance ContractDescription d'une instance ServiceEndpoint correspond à un wsdl:portType. Une instance ContractDescription décrit toutes les opérations d'un contrat donné.

Propriétés Mappage WSDL

Name

Valeur wsdl:portType/@name du contrat.

Namespace

TargetNamespace de la définition wsdl:portType.

SessionMode

Valeur wsdl:portType/@msc:usingSession du contrat. Cet attribut est une extension WCF pour WSDL 1.1.

Operations

Définitions wsdl:operation du contrat.

Opérations

Une instance OperationDescription correspond à un wsdl:portType/wsdl:operation. Une OperationDescription contient une collection d'instances MessageDescription qui décrivent les messages de l'opération.

Deux comportements d'opération participent largement à la manière dont une OperationDescription est mappé à un document WSDL : DataContractSerializerOperationBehavior et XmlSerializerOperationBehavior.

Propriétés Mappage WSDL

Name

Valeur wsdl:portType/wsdl:operation/@name de l'opération.

ProtectionLevel

Assertions de protection dans la stratégie de sécurité jointe aux messages wsdl:binding/wsdl:operation de cette opération.

IsInitiating

Valeur wsdl:portType/wsdl:operation/@msc:isInitiating de l'opération. Cet attribut est une extension WCF pour WSDL 1.1.

IsTerminating

Valeur wsdl:portType/wsdl:operation/@msc:isTerminating de l'opération. Cet attribut est une extension WCF pour WSDL 1.1.

Messages

Messages wsdl:portType/wsdl:operation/wsdl:input et wsdl:portType/wsdl:operation/wsdl:output de l'opération.

Faults

Définitions wsdl:portType/wsdl:operation/wsdl:fault de l'opération.

Behaviors

Les comportements DataContractSerializerOperationBehavior et XmlSerializerOperationBehavior gèrent la liaison d'opération et les messages d'opération.

DataContractSerializerOperationBehavior

Le comportement DataContractSerializerOperationBehavior d'une opération est une implémentation de l'IWsdlExportExtension qui exporte les messages WSDL et la liaison de cette opération. Les types de schémas XML sont exportés à l'aide de l'XsdDataContractExporter. Le comportement DataContractSerializerOperationBehavior détermine également l'utilisation, le style, ainsi que l'exportateur et importateur de schéma à utiliser pour cette opération.

Propriétés Mappage WSDL

DataContractFormatAttribute

La propriété Style de cet attribut correspond à la valeur wsdl:binding/wsdl:operation/soap:operation/@style de l'opération.

Le comportement DataContractSerializerOperationBehavior prend uniquement en charge l'utilisation littérale des types de schémas dans WSDL.

XmlSerializerOperationBehavior

Le comportement XmlSerializerOperationBehavior d'une opération est une implémentation de l'IWsdlExportExtension qui exporte les messages WSDL et la liaison de cette opération. Les types de schémas XML sont exportés à l'aide de l'XmlSchemaExporter. Le comportement XmlSerializerOperationBehavior détermine également l'utilisation, le style, ainsi que l'exportateur et importateur de schéma à utiliser pour cette opération.

Propriétés Mappage WSDL

XmlSerializerFormatAttribute

La propriété Style de cet attribut correspond à la valeur wsdl:binding/wsdl:operation/soap:operation/@style de l'opération.

La propriété Use de cet attribut correspond à la valeur wsdl:binding/wsdl:operation/soap:operation/* /@use de tous les messages de l'opération.

Messages

Une instance MessageDescription correspond à un wsdl:message qui est référencé par un message wsdl:portType/wsdl:operation/wsdl:input ou wsdl:portType/ wsdl:operation/wsdl:output dans une opération. Une MessageDescription possède un corps et des en-têtes.

Propriétés Mappage WSDL

Action

Action SOAP ou WS-Addressing du message.

Notez que les opérations qui utilisent la chaîne d'action "*" ne sont pas représentées dans WSDL.

Direction

MessageDirection.Input correspond à wsdl:input.

MessageDirection.Output correspond à wsdl:output.

ProtectionLevel

Assertions de protection dans la stratégie de sécurité jointe à la définition wsdl:message de ce message.

Body

Corps du message.

Headers

En-têtes du message.

ContractDescription.Name, OperationContract.Name

À l'exportation, utilisé pour dériver la valeur wsdl:message/@name.

Corps du message

Une instance MessageBodyDescription correspond aux définitions wsdl:message/wsdl:part du corps d'un message. Le corps du message peut être encapsulé ou nu.

Propriétés Mappage WSDL

WrapperName

Si le style n'est pas RPC, le WrapperName correspond au nom d'élément référencé par le wsdl:message/wsdl:part, avec @name ayant la valeur « paramètres ».

WrapperNamespace

Si le style n'est pas RPC, l'WrapperNamespace correspond à l'espace de noms d'élément du wsdl:message/wsdl:part, avec @name ayant la valeur « paramètres ».

Parts

Parties du message pour ce corps du message.

ReturnValue

Élément enfant de l'élément wrapper si un élément wrapper existe (style document encapsulé ou style RPC), sinon premier wsdl:message/wsdl:part dans le message.

Parties du message

Une instance MessagePartDescription correspond à un wsdl:message/wsdl:part et au type de schéma XML ou à l'élément vers lequel la partie du message pointe.

Propriétés Mappage WSDL

Name

Valeur wsd:message/wsdl:part/@name de la partie du message et nom de l'élément vers lequel la partie du message pointe.

Namespace

Espace de noms de l'élément vers lequel la partie de message pointe.

Index

Index du wsdl:message/wsdl:part du message.

ProtectionLevel

Assertions de protection dans la stratégie de sécurité jointe à la définition wsdl:message de cette partie du message. La stratégie est paramétrée pour pointer vers la partie spécifique du message.

MessageType

Type de schéma XML de l'élément vers lequel la partie du message pointe.

En-têtes de message

Une instance MessageHeaderDescription est une partie de message qui correspond également à une liaison soap:header de la partie du message.

Erreurs

Une instance FaultDescription correspond à une définition wsdl:portType/wsdl:operation/wsdl:fault et à sa définition wsdl:message associée. La définition wsdl:message est ajoutée au même espace de noms cible que son type de port WSDL associé. La définition wsdl:message possède une seule partie de message nommée « détail » qui pointe vers l'élément du schéma XML qui correspond à la valeur de propriété DefaultType de l'instance FaultDescription.

Propriétés Mappage WSDL

Name

Valeur wsdl:portType/wsdl:operation/wsdl:fault/@name de l'erreur.

Namespace

Espace de noms de l'élément du schéma XML vers lequel la partie « détail » du message d'erreur pointe.

Action

Action SOAP ou WS-Addressing de l'erreur.

ProtectionLevel

Assertions de protection dans la stratégie de sécurité jointe à la définition wsdl:message de cette erreur.

DetailType

Type de schéma XML de l'élément vers lequel la partie « détail » du message pointe.

Name, ContractDescription.Name, OperationDescription.Name,

Utilisé pour dériver la valeur wsdl:message/@name du message d'erreur.

Voir aussi

Référence

System.ServiceModel.Description