Condividi tramite


Informazioni di riferimento su ServiceDescription e WSDL

Questo argomento descrive in che modo Windows Communication Foundation (WCF) esegue il mapping dei documenti WSDL (Web Services Description Language) verso e da ServiceDescription le istanze.

Come ServiceDescription si collega a WSDL 1.1

È possibile usare WCF per esportare documenti WSDL da un'istanza ServiceDescription del servizio. I documenti WSDL vengono generati automaticamente per il servizio quando si pubblicano endpoint di metadati.

È anche possibile importare ServiceEndpoint istanze, ContractDescription istanze e Binding istanze da documenti WSDL usando il WsdlImporter tipo .

I documenti WSDL, esportati da WCF, importano tutte le definizioni di XML Schema usate da documenti XML Schema esterni. Un documento XML Schema separato viene esportato per ogni namespace di destinazione che i tipi di dati utilizzano nel servizio. Analogamente, viene esportato un documento WSDL separato per ogni spazio dei nomi di destinazione usato dai contratti di servizio.

Descrizione del servizio

Un'istanza ServiceDescription esegue il mapping a un wsdl:service elemento. Un'istanza ServiceDescription contiene una raccolta di ServiceEndpoint istanze mappate a singoli wsdl:port elementi.

Proprietà Mapping WSDL
Name Il valore wsdl:service/@name del servizio.
Namespace TargetNamespace per la wsdl:service definizione del servizio.
Endpoints Definizioni wsdl:port per il servizio.

Endpoint del servizio

Un'istanza ServiceEndpoint esegue il mapping a un wsdl:port elemento. Un'istanza ServiceEndpoint contiene un indirizzo, un binding e un contratto.

I comportamenti degli endpoint che implementano l'interfaccia IWsdlExportExtension possono modificare l'elemento wsdl:port per l'endpoint a cui sono collegati.

Proprietà Mapping WSDL
Name Il valore wsdl:port/@name per l'endpoint e il valore wsdl:binding/@name per il binding dell'endpoint.
Address Indirizzo della definizione per l'endpoint wsdl:port.

Il sistema di trasporto per l'endpoint determina il formato dell'indirizzo. Ad esempio, per i trasporti supportati da WCF può essere un indirizzo SOAP o un riferimento all'endpoint.
Binding Definizione wsdl:binding per l'endpoint.

A differenza delle wsdl:binding definizioni, i binding in WCF non sono vincolati a nessun contratto.
Contract Definizione wsdl:portType per l'endpoint.
Behaviors I comportamenti degli endpoint che implementano l'interfaccia IWsdlExportExtension possono modificare l'endpoint per wsdl:port.

Collegamenti

L'istanza di associazione per un'istanza ServiceEndpoint si mappa a una definizione wsdl:binding. A differenza delle wsdl:binding definizioni, che devono essere associate a una definizione specifica wsdl:portType , le associazioni WCF sono indipendenti da qualsiasi contratto.

Un'associazione è costituita da una raccolta di elementi di associazione. Ogni elemento descrive alcuni aspetti del modo in cui l'endpoint comunica con i client. Inoltre, un'associazione ha un elemento MessageVersion che indica gli EnvelopeVersion e AddressingVersion per l'endpoint.

Proprietà Mapping WSDL
Name Usato nel nome predefinito di un endpoint, ovvero il nome dell'associazione con il nome del contratto aggiunto separato da un carattere di sottolineatura.
Namespace La targetNamespace per la definizione di wsdl:binding.

In caso di importazione, se un criterio è collegato alla porta WSDL, lo spazio dei nomi dell'associazione importato viene mappato su targetNamespace per la definizione di wsdl:port.
BindingElementCollection, come restituito dal CreateBindingElementsmetodo () Varie estensioni specifiche del dominio alla wsdl:binding definizione, in genere asserzioni di criteri.
MessageVersion Il EnvelopeVersion e il AddressingVersion per l'endpoint.

Quando MessageVersion.None viene specificato, il binding WSDL non contiene un binding SOAP e la porta WSDL non contiene WS-Addressing. Questa impostazione viene in genere usata per gli endpoint XML (POX) semplici.

Elementi di associazione

Gli elementi di binding per un'associazione di endpoint vengono mappati su varie estensioni WSDL in wsdl:binding, come le asserzioni di criteri di policy.

L'oggetto TransportBindingElement per l'associazione determina l'URI (Uniform Resource Identifier) di trasporto per un'associazione SOAP.

VersioneDiIndirizzamento

AddressingVersion in un'associazione mappa alla versione di indirizzamento usata in wsd:port. WCF supporta indirizzi SOAP 1.1 e SOAP 1.2, e endpoint di riferimento WS-Addressing 08/2004 e WS-Addressing 1.0.

EnvelopeVersion

Il EnvelopeVersion in un'associazione si mappa alla versione di SOAP utilizzata in wsdl:binding. WCF associa le SOAP 1.1 e SOAP 1.2.

Contratti

L'istanza ContractDescription per un'istanza ServiceEndpoint corrisponde a un wsdl:portType. Un'istanza ContractDescription descrive tutte le operazioni per un determinato contratto.

Proprietà Mapping WSDL
Name Il valore wsdl:portType/@name del contratto.
Namespace TargetNamespace per la wsdl:portType definizione.
SessionMode Il valore wsdl:portType/@msc:usingSession per il contratto. Questo attributo è un'estensione WCF per WSDL 1.1.
Operations Le definizioni wsdl:operation del contratto.

Operazioni

Un'istanza OperationDescription corrisponde a un wsdl:portType/wsdl:operation. Un OperationDescription contiene una raccolta di istanze MessageDescription che descrivono i messaggi per l'operazione.

Due comportamenti dell'operazione partecipano principalmente alla modalità di mapping di un oggetto OperationDescription a un documento WSDL: DataContractSerializerOperationBehavior e XmlSerializerOperationBehavior.

Proprietà Mapping WSDL
Name Il valore dell'operazione per wsdl:portType/wsdl:operation/@name.
ProtectionLevel Asserzioni di protezione nelle politiche di sicurezza associate ai wsdl:binding/wsdl:operation messaggi per questa operazione.
IsInitiating Il valore wsdl:portType/wsdl:operation/@msc:isInitiating per l'operazione. Questo attributo è un'estensione WCF per WSDL 1.1.
IsTerminating Il valore wsdl:portType/wsdl:operation/@msc:isTerminating dell'operazione. Questo attributo è un'estensione WCF per WSDL 1.1.
Messages Messaggi wsdl:portType/wsdl:operation/wsdl:input e wsdl:portType/wsdl:operation/wsdl:output per l'operazione.
Faults Definizioni wsdl:portType/wsdl:operation/wsdl:fault per l'operazione.
Behaviors DataContractSerializerOperationBehavior e XmlSerializerOperationBehavior gestiscono le associazioni delle operazioni e i messaggi delle operazioni.

ComportamentoOperazioneSerializerContrattoDati

Il DataContractSerializerOperationBehavior per un'operazione è un'implementazione IWsdlExportExtension che esporta i messaggi WSDL e il binding per quella operazione. I tipi di XML Schema vengono esportati utilizzando .XsdDataContractExporter Determina anche l'utilizzo, lo stile e l'esportatore e importatore di schema da utilizzare per tale operazione.

Proprietà Mappatura WSDL
DataContractFormatAttribute La Style proprietà per questo attributo mappa al valore wsdl:binding/wsdl:operation/soap:operation/@style per l'operazione.

DataContractSerializerOperationBehavior supporta solo l'uso letterale dei tipi di schema nel linguaggio WSDL.

The XmlSerializerOperationBehavior

Il XmlSerializerOperationBehavior per un'operazione è un'implementazione IWsdlExportExtension che esporta i messaggi WSDL e il binding per quella operazione. I tipi di XML Schema vengono esportati utilizzando .XmlSchemaExporter Determina anche l'utilizzo, lo stile e l'esportatore e importatore di schema da utilizzare per tale operazione.

Proprietà Mapping WSDL
XmlSerializerFormatAttribute La Style proprietà per questo attributo mappa al valore wsdl:binding/wsdl:operation/soap:operation/@style per l'operazione.

La proprietà Use di questo attributo mappa ai valori wsdl:binding/wsdl:operation/soap:operation/*/@use per tutti i messaggi nell'operazione.

Messaggi

Un'istanza MessageDescription esegue il mapping a un wsdl:message, a cui fa riferimento un wsdl:portType/wsdl:operation/wsdl:input o un wsdl:portType/wsdl:operation/wsdl:output messaggio in un'operazione. Un MessageDescription ha un corpo e delle intestazioni.

Proprietà Mappatura WSDL
Action Azione SOAP o WS-Addressing per il messaggio.

Si noti che le operazioni che usano la stringa di azione "*" non sono rappresentate in WSDL.
Direction MessageDirection.Input viene mappato su wsdl:input.

MessageDirection.Output viene mappato su wsdl:output.
ProtectionLevel Asserzioni di protezione nei criteri di sicurezza associate alla wsdl:message definizione per questo messaggio.
Body Corpo del messaggio.
Headers Le intestazioni del messaggio.
ContractDescription.Name, OperationContract.Name Durante l'esportazione, usato per derivare il valore di wsdl:message/@name.

Corpo del messaggio

Un'istanza MessageBodyDescription viene mappata alle definizioni wsdl:message/wsdl:part per il corpo di un messaggio. Il corpo del messaggio può essere incapsulato o nudo.

Proprietà Mappatura WSDL
WrapperName Se lo stile non è RPC, allora WrapperName corrisponde al nome dell'elemento riferito da wsdl:message/wsdl:part, con @name impostato su "parameters".
WrapperNamespace Se lo stile non è RPC, allora il WrapperNamespace mappa allo spazio dei nomi dell'elemento per wsdl:message/wsdl:part con @name impostato su "parameters".
Parts Parti del messaggio per questo corpo del messaggio.
ReturnValue Elemento figlio dell'elemento wrapper se esiste un elemento wrapper (stile di wrapping del documento o stile RPC), altrimenti il primo wsdl:message/wsdl:part nel messaggio.

Parti del messaggio

Un'istanza MessagePartDescription corrisponde a wsdl:message/wsdl:part e al tipo o all'elemento dello schema XML a cui fa riferimento la parte del messaggio.

Proprietà Mapping WSDL
Name Valore wsd:message/wsdl:part/@name per la parte del messaggio e il nome dell'elemento a cui punta la parte del messaggio.
Namespace Spazio dei nomi dell'elemento a cui punta la parte del messaggio.
Index Indice di wsdl:message/wsdl:part per il messaggio.
ProtectionLevel Asserzioni di protezione nei criteri di sicurezza associate alla wsdl:message definizione per questa parte del messaggio. La politica viene parametrizzata per puntare alla parte specifica del messaggio.
MessageType Tipo di XML Schema dell'elemento a cui punta la parte del messaggio.

Intestazioni dei messaggi

Un'istanza di MessageHeaderDescription è una parte del messaggio che viene mappata anche su un'associazione soap:header relativa alla parte del messaggio.

Difetti

Un'istanza FaultDescription corrisponde a una definizione wsdl:portType/wsdl:operation/wsdl:fault e alla sua definizione associata wsdl:message. L'elemento wsdl:message viene aggiunto allo stesso spazio dei nomi di destinazione del tipo di porta WSDL a esso associato. Il wsdl:message ha una singola parte di messaggio denominata "detail" che punta all'elemento dello Schema XML che corrisponde al valore della proprietà DefaultType per l'istanza FaultDescription.

Proprietà Mapping WSDL
Name Il valore wsdl:portType/wsdl:operation/wsdl:fault/@name per l'errore.
Namespace Namespace dell'elemento Schema XML a cui fa riferimento la parte del messaggio di dettaglio dell'errore.
Action Azione SOAP o WS-Addressing per l'errore.
ProtectionLevel Asserzioni di protezione associate nei criteri di sicurezza alla definizione wsdl:message per questo errore.
DetailType Tipo di XML Schema dell'elemento a cui punta la parte del messaggio di dettaglio.
Name, ContractDescription.Name, OperationDescription.Name, Usato per derivare il valore wsdl:message/@name per il messaggio di errore.

Vedere anche