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