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 inversement.

Comment ServiceDescription correspond à WSDL 1.1

Vous pouvez utiliser WCF pour exporter des documents WSDL à partir d’une ServiceDescription instance pour votre service. Les documents WSDL sont générés automatiquement 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 toutes les définitions de schéma XML utilisées à partir de documents de schéma XML externes. Un document de schéma XML distinct est exporté pour chaque espace de noms cible que les types de données utilisent dans le service. De même, un document WSDL distinct est exporté pour chaque espace de noms cible que les contrats de service utilisent.

Description du Service

Une ServiceDescription instance est mappée à un wsdl:service élément. Une ServiceDescription instance contient une collection d’instances ServiceEndpoint qui correspondent à des éléments individuels wsdl:port.

Propriétés Mappage d’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 ServiceEndpoint instance est mappée à un wsdl:port élément. Une ServiceEndpoint instance 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 pour le point de terminaison auquel ils sont attachés.

Propriétés Mappage d’WSDL
Name Valeur wsdl:port/@name pour le point de terminaison et valeur wsdl:binding/@name pour la liaison du 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 de point de terminaison.
Binding Définition wsdl:binding du point de terminaison.

Contrairement aux 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 ServiceEndpoint instance est mappée à une wsdl:binding définition. À la différence des définitions wsdl:binding, qui doivent être associées à une définition spécifique wsdl:portType, les liaisons WCF sont indépendantes de tout contrat.

Une liaison est constitué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 d’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, comme retourné par la CreateBindingElementsméthode () Différentes extensions à la définition wsdl:binding spécifiques à un domaine, généralement des assertions de politique.
MessageVersion EnvelopeVersion et AddressingVersion pour l'endpoint.

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

BindingElements

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

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, ainsi que les références d'endpoint WS-Addressing 08/2004 et WS-Addressing 1.0.

EnvelopeVersion

EnvelopeVersion d'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 ServiceEndpoint instance est mappée à un wsdl:portType. Une ContractDescription instance décrit toutes les opérations d’un contrat donné.

Propriétés Mappage d’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 OperationDescription instance correspond à un wsdl:portType/wsdl:operation. Un OperationDescription contient une collection d’instances de MessageDescription qui décrivent les messages de l’opération.

Deux comportements d’opération participent fortement à la façon dont un OperationDescription est mappé à un document WSDL : DataContractSerializerOperationBehavior et XmlSerializerOperationBehavior.

Propriétés Mappage d’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 Les messages wsdl:portType/wsdl:operation/wsdl:input et wsdl:portType/wsdl:operation/wsdl:output pour l’opération.
Faults Définitions wsdl:portType/wsdl:operation/wsdl:fault de l’opération.
Behaviors Le DataContractSerializerOperationBehavior et le XmlSerializerOperationBehavior s'occupent de la liaison d'opération et des 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éma XML sont exportés à l’aide du 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 Style propriété de cet attribut est mappée à la valeur wsdl:binding/wsdl:operation/soap:operation/@style de l’opération.

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

Comportement opérationnel du XmlSerializer

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éma XML sont exportés à l’aide du 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 d’WSDL
XmlSerializerFormatAttribute La Style propriété de cet attribut est mappée à 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 MessageDescription instance est mappée à un wsdl:message objet référencé par un wsdl:portType/wsdl:operation/wsdl:input ou un wsdl:portType/wsdl:operation/wsdl:output message dans une opération. Un 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 est mappé à wsdl:input.

MessageDirection.Output est mappé à 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 Lors de l'exportation, utilisé pour dériver la valeur wsdl:message/@name.

Corps du message

Une MessageBodyDescription instance correspond aux wsdl:message/wsdl:part définitions pour le 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, alors le WrapperName correspond au nom de l’élément référencé par wsdl:message/wsdl:part avec @name défini sur « parameters ».
WrapperNamespace Si le style n’est pas RPC, alors le WrapperNamespace se mappe à l’espace de noms de l’élément wsdl:message/wsdl:part avec @name défini sur « parameters ».
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 de message

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

Propriétés Mappage d’WSDL
Name Valeur wsd:message/wsdl:part/@name pour la partie du message et le nom de l’élément auquel la partie du message pointe.
Namespace Espace de noms de l’élément vers lequel pointe la partie du message.
Index Index du message wsdl:message/wsdl:part.
ProtectionLevel Les assertions de protection dans la politique de sécurité sont attachées à la définition wsdl:message de cette partie du message. La politique 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 pointe la partie du message.

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.

Défauts

Une instance FaultDescription correspond à une définition wsdl:portType/wsdl:operation/wsdl:fault et à sa définition wsdl:message associée. wsdl:message est ajouté au même espace de noms cible que le 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 d’WSDL
Name Valeur wsdl:portType/wsdl:operation/wsdl:fault@name de l’erreur.
Namespace Espace de noms de l’élément Schéma XML vers lequel pointe le message de détail d’erreur.
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 pointe le composant message de détail.
Name, ContractDescription.Name, OperationDescription.Name, Utilisé pour dériver la valeur de wsdl:message/@name pour le message d'erreur.

Voir aussi