Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 CreateBindingElements mé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. |