ServiceDescription en WSDL-referentie

In dit onderwerp wordt beschreven hoe WSDL-documenten (Web Services Description Language) door Windows Communication Foundation (WCF) worden toegewezen aan en van ServiceDescription exemplaren.

Hoe ServiceDescription overeenkomt met WSDL 1.1

U kunt WCF gebruiken om WSDL-documenten te exporteren vanuit een ServiceDescription exemplaar voor uw service. WSDL-documenten worden automatisch gegenereerd voor uw service wanneer u metagegevenseindpunten publiceert.

U kunt ook ServiceEndpoint exemplaren, ContractDescription exemplaren en Binding exemplaren uit WSDL-documenten importeren met behulp van het WsdlImporter type.

De WSDL-documenten, geëxporteerd door WCF, importeren alle XML-schemadefinities die worden gebruikt uit externe XML-schemadocumenten. Er wordt een afzonderlijk XML-schemadocument geëxporteerd voor elke doelnaamruimte die door de gegevenstypen in de service wordt gebruikt. Op dezelfde manier wordt een afzonderlijk WSDL-document geëxporteerd voor elke doelnaamruimte die door de servicecontracten wordt gebruikt.

Beschrijving van de dienst

Een ServiceDescription exemplaar komt overeen met een wsdl:service element. Een ServiceDescription exemplaar bevat een verzameling ServiceEndpoint exemplaren die elk zijn toegewezen aan afzonderlijke wsdl:port elementen.

Eigenschappen WSDL-toewijzing
Name De waarde wsdl:service/@name voor de service.
Namespace De TargetNamespace voor de wsdl:service definitie voor de service.
Endpoints De wsdl:port definities voor de service.

Service-eindpunt

Een ServiceEndpoint exemplaar komt overeen met een wsdl:port element. Een ServiceEndpoint exemplaar bevat een adres, een binding en een contract.

Eindpuntgedragingen die de IWsdlExportExtension interface implementeren, kunnen het wsdl:port element wijzigen voor het eindpunt waaraan ze zijn gekoppeld.

Eigenschappen WSDL-toewijzing
Name De wsdl:portwaarde /@name voor het eindpunt en de wsdl:binding/@name-waarde voor de eindpuntbinding.
Address Het adres voor de wsdl:port definitie voor het eindpunt.

Het transport voor het eindpunt bepaalt de indeling van het adres. Voor door WCF ondersteunde transporten kan dit bijvoorbeeld een SOAP-adres of een eindpuntverwijzing zijn.
Binding De wsdl:binding definitie voor het eindpunt.

In tegenstelling tot wsdl:binding definities zijn bindingen in WCF niet gekoppeld aan één contract.
Contract De wsdl:portType definitie voor het eindpunt.
Behaviors Eindpuntgedrag dat de IWsdlExportExtension interface implementeert, kan het wsdl:port voor het eindpunt wijzigen.

Verbindingen

Het bindingexemplaren voor een ServiceEndpoint exemplaar worden toegewezen aan een wsdl:binding definitie. In tegenstelling tot wsdl:binding definities, die moeten worden gekoppeld aan een specifieke wsdl:portType definitie, zijn WCF-bindingen onafhankelijk van elk contract.

Een binding bestaat uit een verzameling bindingselementen. Elk element beschrijft een bepaald aspect van hoe het eindpunt communiceert met clients. Daarnaast heeft een binding een MessageVersion die het EnvelopeVersion en AddressingVersion voor het eindpunt aangeeft.

Eigenschappen WSDL-toewijzing
Name Wordt gebruikt in de standaardnaam van een eindpunt. Dit is de bindingsnaam waaraan de contractnaam is toegevoegd, gescheiden door een onderstrepingsteken.
Namespace De targetNamespace voor de wsdl:binding definitie.

Als er bij het importeren een beleid is gekoppeld aan de WSDL-poort, wordt de geïmporteerde bindingsnaamruimte toegewezen aan de targetNamespacewsdl:port definitie.
BindingElementCollection, zoals geretourneerd door de CreateBindingElements() methode Verschillende domeinspecifieke extensies voor de wsdl:binding definitie, meestal beleidsverklaringen.
MessageVersion De EnvelopeVersion en AddressingVersion voor het eindpunt.

Wanneer MessageVersion.None is opgegeven, bevat de WSDL-binding geen SOAP-binding en bevat de WSDL-poort geen WS-Addressing-content. Deze instelling wordt doorgaans gebruikt voor gewone OUDE XML-eindpunten (POX).

Bindende Elementen

De bindingselementen voor een eindpuntbinding worden toegewezen aan verschillende WSDL-extensies in de wsdl:binding, zoals beleidsverklaringen.

De TransportBindingElement voor de binding bepaalt de transport Uniform Resource Identifier (URI) voor een SOAP-binding.

VersieVoorAdressering

De AddressingVersion in een binding komt overeen met de versie van adressering die in de wsd:port wordt gebruikt. WCF ondersteunt SOAP 1.1- en SOAP 1.2-adressen en WS-Addressing 08-2004- en WS-Addressing 1.0-eindpuntverwijzingen.

EnvelopeVersion

De EnvelopeVersion op een binding wordt toegewezen aan de versie van SOAP die wordt gebruikt in de wsdl:binding. WCF ondersteunt SOAP 1.1- en SOAP 1.2-bindingen.

Contracten

Het ContractDescription exemplaar voor een ServiceEndpoint exemplaar komt overeen met een wsdl:portType. In ContractDescription instantie worden alle bewerkingen voor een bepaald contract beschreven.

Eigenschappen WSDL-toewijzing
Name De wsdl:portType/@name-waarde voor het contract.
Namespace De targetNamespace voor de wsdl:portType definitie.
SessionMode De wsdl:portType/@msc:usingSession-waarde voor het contract. Dit kenmerk is een WCF-extensie voor WSDL 1.1.
Operations De wsdl:operation definities voor het contract.

Bedrijfsactiviteiten

Een OperationDescription exemplaar komt overeen met een wsdl:portType/wsdl:operation. Een OperationDescription bevat een verzameling MessageDescription instanties die de berichten voor de bewerking beschrijven.

Twee werkingsgedragen nemen sterk deel aan hoe een OperationDescription wordt toegewezen aan een WSDL-document: DataContractSerializerOperationBehavior en XmlSerializerOperationBehavior.

Eigenschappen WSDL-toewijzing
Name De waarde van wsdl:portType/wsdl:operation/@name voor de bewerking.
ProtectionLevel Beschermingsverklaringen in beveiligingsbeleid die zijn gekoppeld aan de wsdl:binding/wsdl:operation berichten voor deze bewerking.
IsInitiating De wsdl:portType/wsdl:operation/@msc:isInitiating waarde voor de bewerking. Dit kenmerk is een WCF-extensie voor WSDL 1.1.
IsTerminating De wsdl:portType/wsdl:operation/@msc:isTerminating-waarde voor de bewerking. Dit kenmerk is een WCF-extensie voor WSDL 1.1.
Messages De wsdl:portType/wsdl:operation/wsdl:input en wsdl:portType/wsdl:operation/wsdl:output berichten voor de bewerking.
Faults De wsdl:portType/wsdl:operation/wsdl:fault definities voor de bewerking.
Behaviors De DataContractSerializerOperationBehavior en XmlSerializerOperationBehavior houden zich bezig met de bewerkingsbinding en de bewerkingsberichten.

De DataContractSerializerOperationBehavior

De DataContractSerializerOperationBehavior voor een bewerking is een IWsdlExportExtension implementatie waarmee de WSDL-berichten en binding voor die bewerking worden geëxporteerd. De XML-schematypen worden geëxporteerd met behulp van de XsdDataContractExporter. Het DataContractSerializerOperationBehavior bepaalt ook de manier van gebruik, de stijl en de schema-exporteur en -importeur voor die bewerking.

Eigenschappen WSDL-toewijzing
DataContractFormatAttribute De Style-eigenschap voor dit kenmerk komt overeen met de wsdl:binding/wsdl:operation/soap:operation/@style-waarde voor de bewerking.

De DataContractSerializerOperationBehavior functie ondersteunt alleen het letterlijke gebruik van de schematypen in de WSDL.

De XmlSerializerOperationBehavior

De XmlSerializerOperationBehavior voor een bewerking is een IWsdlExportExtension implementatie waarmee de WSDL-berichten en binding voor die bewerking worden geëxporteerd. De XML-schematypen worden geëxporteerd met behulp van de XmlSchemaExporter. Het XmlSerializerOperationBehavior bepaalt ook de manier van gebruik, de stijl en de schema-exporteur en -importeur voor die bewerking.

Eigenschappen WSDL-toewijzing
XmlSerializerFormatAttribute De Style-eigenschap voor dit kenmerk komt overeen met de wsdl:binding/wsdl:operation/soap:operation/@style-waarde voor de bewerking.

De Use eigenschap voor dit kenmerk komt overeen met de wsdl:binding/wsdl:operation/soap:operation/*/@use waarden voor alle berichten in de bewerking.

Berichten

Een MessageDescription voorstelling wordt toegewezen aan een wsdl:message waaraan wordt gerefereerd door een wsdl:portType/wsdl:operation/wsdl:input of een wsdl:portType/wsdl:operation/wsdl:output bericht in een bewerking. A MessageDescription heeft een hoofdtekst en kopteksten.

Eigenschappen WSDL-toewijzing
Action De SOAP- of WS-Addressing-actie voor het bericht.

Bewerkingen die gebruikmaken van de actiereeks *, worden niet weergegeven in WSDL.
Direction MessageDirection.Input wordt toegewezen aan wsdl:input.

MessageDirection.Output wordt toegewezen aan wsdl:output.
ProtectionLevel Beveiligingsverklaringen in beveiligingsbeleid die zijn gekoppeld aan de wsdl:message definitie voor dit bericht.
Body De hoofdtekst van het bericht.
Headers De kopteksten voor het bericht.
ContractDescription.Name, OperationContract.Name Bij export wordt gebruikt om de wsdl:message/@name-waarde af te leiden.

Berichtinhoud

Een MessageBodyDescription exemplaar wordt gekoppeld aan de wsdl:message/wsdl:part definities voor de inhoud van een bericht. De hoofdtekst van het bericht kan worden verpakt of ontbloot.

Eigenschappen WSDL-toewijzing
WrapperName Als de stijl niet RPC is, dan wordt de naam die aan het WrapperName-element is toegewezen, verwezen door de wsdl:message/wsdl:part en is de @name ingesteld op 'parameters'.
WrapperNamespace Als de stijl niet RPC is, wordt de WrapperNamespace toegewezen aan de elementennaamruimte voor de wsdl:message/wsdl:part met @name ingesteld op 'parameters'.
Parts De berichtonderdelen voor deze berichttekst.
ReturnValue Het onderliggende element van het wrapper-element, indien er een wrapper-element bestaat (document-wrapped stijl, of RPC-stijl), anders het eerste wsdl:message/wsdl:part in het bericht.

Berichtonderdelen

Een MessagePartDescription exemplaar komt overeen met een wsdl:message/wsdl:part en het XML-schematype of -element waarnaar het berichtdeel verwijst.

Eigenschappen WSDL-toewijzing
Name De wsd:message/wsdl:partwaarde /@name voor het berichtonderdeel en de naam van het element waarnaar het berichtonderdeel verwijst.
Namespace De naamruimte van het element waarnaar het berichtonderdeel verwijst.
Index De index van het wsdl:message/wsdl:part bericht.
ProtectionLevel Beschermingsclaims in het beveiligingsbeleid dat is gekoppeld aan de wsdl:message definitie voor dit berichtonderdeel. Het beleid wordt geparameteriseerd om naar het specifieke berichtonderdeel te verwijzen.
MessageType Het XML-schematype van het element waarnaar het berichtonderdeel verwijst.

Berichtkoppen

Een MessageHeaderDescription exemplaar is een berichtgedeelte dat ook is gekoppeld aan een soap:header binding voor het berichtgedeelte.

Storingen

Een FaultDescription exemplaar wordt toegewezen aan een wsdl:portType/wsdl:operation/wsdl:fault definitie en de bijbehorende wsdl:message definitie. De wsdl:message naamruimte wordt toegevoegd aan dezelfde doelnaamruimte als het bijbehorende WSDL-poorttype. Het wsdl:message heeft één berichtonderdeel met de naam 'detail' dat verwijst naar het XML-schema-element dat overeenkomt met de DefaultType eigenschapswaarde voor het FaultDescription exemplaar.

Eigenschappen WSDL-toewijzing
Name De wsdl:portType/wsdl:operation/wsdl:fault/@name-waarde voor de fout.
Namespace De naamruimte van het XML-schema-element waarnaar het onderdeel foutdetails verwijst.
Action De SOAP- of WS-Addressing-actie voor de fout.
ProtectionLevel Beveiligingsverklaringen in het beveiligingsbeleid die gekoppeld zijn aan de wsdl:message specificatie voor deze fout.
DetailType Het XML-schematype van het element waarnaar het detailberichtonderdeel verwijst.
Name, ContractDescription.Name, OperationDescription.Name, Wordt gebruikt om de wsdl:message/@name-waarde voor het foutbericht af te leiden.

Zie ook