ServiceDescription e riferimento a WSDL
Questo argomento descrive in che modo Windows Communication Foundation (WCF) esegue il mapping dei documenti WSDL (Web Services Description Language) da e verso le istanze di ServiceDescription.
Mapping di ServiceDescription a WSDL 1.1
È possibile usare WCF per esportare documenti WSDL da un'istanza di ServiceDescription per il servizio. I documenti WSDL vengono generati automaticamente per il servizio quando si pubblicano endpoint di metadati.
È inoltre possibile importare istanze ServiceEndpoint, ContractDescription e Binding da documenti WSDL usando il tipo WsdlImporter
.
I documenti WSDL, esportati da WCF, importano tutte le definizioni di XML Schema usate da documenti XML Schema esterni. Per ogni spazio dei nomi di destinazione che i tipi di dati usano nel servizio viene esportato un documento XSD separato. Analogamente, per ogni spazio dei nomi di destinazione usato dai contratti di servizio viene esportato un documento WSDL separato.
ServiceDescription
Un'istanza ServiceDescription esegue il mapping a un elemento wsdl:service
. Un'istanza ServiceDescription contiene una raccolta di istanze ServiceEndpoint, ognuna delle quali esegue il mapping a singoli elementi wsdl:port
.
Proprietà | Mapping WSDL |
---|---|
Name |
Valore wsdl:service /@name per il servizio. |
Namespace |
Valore targetNamespace per la definizione wsdl:service del servizio. |
Endpoints |
Definizioni di wsdl:port per il servizio. |
ServiceEndpoint
Un'istanza ServiceEndpoint esegue il mapping a un elemento wsdl:port
. Un'istanza ServiceEndpoint contiene un indirizzo, un'associazione e un contratto.
I comportamenti dell'endpoint che implementano l'interfaccia IWsdlExportExtension possono modificare l'elemento wsdl:port
per l'endpoint al quale sono associati.
Proprietà | Mapping WSDL |
---|---|
Name |
Valore wsdl:port /@name per l'endpoint e valore wsdl:binding /@name per il binding dell'endpoint. |
Address |
Indirizzo per la definizione di wsdl:port per l'endpoint.Il 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 di wsdl:binding per l'endpoint.A differenza delle definizioni di wsdl:binding , i binding in WCF non sono associati a un contratto. |
Contract |
Definizione di wsdl:portType per l'endpoint. |
Behaviors |
I comportamenti dell'endpoint che implementano l'interfaccia IWsdlExportExtension possono modificare l'elemento wsdl:port per l'endpoint. |
Bindings
L'istanza di associazione per un'istanza ServiceEndpoint
esegue il mapping a una definizione di wsdl:binding
. A differenza delle definizioni di wsdl:binding
, che devono essere associati a una definizione di wsdl:portType
specifica, i binding WCF sono indipendenti da qualsiasi contratto.
Un'associazione è costituita da una raccolta di elementi di associazione. Ogni elemento descrive alcuni aspetti relativi alla modalità di comunicazione tra l'endpoint e i client. Un'associazione comprende inoltre una classe MessageVersion che indica le classi EnvelopeVersion e AddressingVersion per l'endpoint.
Proprietà | Mapping WSDL |
---|---|
Name |
Utilizzato nel nome predefinito di un endpoint, ovvero il nome dell'associazione seguito dal nome del contratto separati da un carattere di sottolineatura. |
Namespace |
targetNamespace per la definizione di wsdl:binding .Se alla porta WSDL è associato un criterio, al momento dell'importazione viene eseguito il mapping dello spazio dei nomi di associazione importato a targetNamespace per la definizione di wsdl:port . |
Elemento BindingElementCollection restituito dal metodo CreateBindingElements (). |
Varie estensioni specifiche del dominio alla definizione di wsdl:binding , in genere asserzioni di criteri. |
MessageVersion |
EnvelopeVersion e AddressingVersion per l'endpoint.Quando viene specificato MessageVersion.None , l'associazione WSDL non contiene un'associazione SOAP e la porta WSDL non include il contenuto WS-Addressing. Questa impostazione viene in genere usata per endpoint XML (POX) obsoleti. |
BindingElements
Gli elementi di associazione per un endpoint eseguono il mapping a varie estensioni WSDL nell'elemento wsdl:binding
, ad esempio asserzioni di criteri.
La classe TransportBindingElement per l'associazione determina l'URI (Uniform Resource Identifier) per un'associazione SOAP.
AddressingVersion
L'oggetto AddressingVersion
in un'associazione esegue il mapping alla versione di indirizzamento usata in wsd:port
. WCF supporta indirizzi SOAP 1.1 e SOAP 1.2 e riferimenti agli endpoint WS-Addressing 08/2004 e WS-Addressing 1.0.
EnvelopeVersion
L'oggetto EnvelopeVersion
in un'associazione esegue il mapping alla versione di SOAP usata in wsdl:binding
. WCF supporta binding SOAP 1.1 e SOAP 1.2.
Contratti
L'istanza ContractDescription di un'istanza ServiceEndpoint
esegue il mapping a wsdl:portType
. Un'istanza ContractDescription
descrive tutte le operazioni per un determinato contratto.
Proprietà | Mapping WSDL |
---|---|
Name |
Valore wsdl:portType /@name per il contratto. |
Namespace |
Valore targetNamespace per la definizione di wsdl:portType . |
SessionMode |
Valore wsdl:portType /@msc:usingSession per il contratto. Questo attributo è un'estensione WCF per WSDL 1.1. |
Operations |
Definizioni di wsdl:operation per il contratto. |
Operazioni
Un'istanza di OperationDescription esegue il mapping a un wsdl:portType
/wsdl:operation
. Un elemento OperationDescription
contiene una raccolta di istanze MessageDescription
che descrivono i messaggi per l'operazione.
La modalità di esecuzione del mapping di OperationDescription
a un documento WSDL è fortemente influenzata dai comportamenti di due operazioni: DataContractSerializerOperationBehavior
e XmlSerializerOperationBehavior
.
Proprietà | Mapping WSDL |
---|---|
Name |
Valore wsdl:portType /wsdl:operation /@name per l'operazione. |
ProtectionLevel |
Asserzioni di protezione in un criterio di sicurezza associato ai messaggi wsdl:binding/wsdl:operation per questa operazione. |
IsInitiating |
Valore wsdl:portType /wsdl:operation /@msc:isInitiating per l'operazione. Questo attributo è un'estensione WCF per WSDL 1.1. |
IsTerminating |
Valore wsdl:portType /wsdl:operation /@msc:isTerminating per l'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 di wsdl:portType /wsdl:operation /wsdl:fault per l'operazione. |
Behaviors |
DataContractSerializerOperationBehavior e XmlSerializerOperationBehavior si riferiscono all'associazione e ai messaggi dell'operazione. |
DataContractSerializerOperationBehavior
L'elemento DataContractSerializerOperationBehavior
per un'operazione è un'implementazione dell'interfaccia IWsdlExportExtension
che esporta i messaggi e l'associazione WSDL per tale operazione. I tipi XML Schema vengono esportati usando XsdDataContractExporter
. L'elemento DataContractSerializerOperationBehavior
determina inoltre l'uso, lo stile e l'utilità di esportazione e importazione dello schema da usare per l'operazione.
Proprietà | Mapping WSDL |
---|---|
DataContractFormatAttribute |
La proprietà Style per questo attributo esegue il mapping al valore wsdl:binding /wsdl:operation /soap:operation /@style per l'operazione.DataContractSerializerOperationBehavior supporta soltanto l'uso letterale dei tipi di schema in WSDL. |
XmlSerializerOperationBehavior
L'elemento XmlSerializerOperationBehavior
per un'operazione è un'implementazione dell'interfaccia IWsdlExportExtension
che esporta i messaggi e l'associazione WSDL per tale operazione. I tipi XML Schema vengono esportati usando XmlSchemaExporter
. L'elemento XmlSerializerOperationBehavior
determina inoltre l'uso, lo stile e l'utilità di esportazione e importazione dello schema da usare per l'operazione.
Proprietà | Mapping WSDL |
---|---|
XmlSerializerFormatAttribute |
La proprietà Style per questo attributo esegue il mapping al valore wsdl:binding /wsdl:operation /soap:operation /@style per l'operazione.La proprietà Use per questo attributo viene mappata ai valori wsdl:binding /wsdl:operation /soap:operation /*/@use per tutti i messaggi nell'operazione. |
Messaggi
Un'istanza di MessageDescription
esegue il mapping a un wsdl:message
a cui fa riferimento un wsdl:portType
/wsdl:operation
/wsdl:input
o un messaggio wsdl:portType
/wsdl:operation
/wsdl:output
in un'operazione. Un elemento MessageDescription
è costituito da un corpo e da intestazioni.
Proprietà | Mapping WSDL |
---|---|
Action |
Azione SOAP o WS-Addressing per il messaggio. Le operazioni che usano la stringa di azione "*" non sono rappresentate in WSDL. |
Direction |
MessageDirection.Input esegue il mapping a wsdl:input .MessageDirection.Output esegue il mapping a wsdl:output . |
ProtectionLevel |
Asserzioni di protezione in un criterio di sicurezza associato alla definizione di wsdl:message per questo messaggio. |
Body |
Corpo del messaggio. |
Headers |
Intestazioni del messaggio. |
ContractDescription.Name , OperationContract.Name |
In caso di esportazione, usato per derivare il valore wsdl:message /@name. |
Corpo del messaggio
Un'istanza di MessageBodyDescription
esegue il mapping alle definizioni di wsdl:message
/wsdl:part
per il corpo di un messaggio. Il corpo del messaggio può essere wrapped o bare.
Proprietà | Mapping WSDL |
---|---|
WrapperName |
Se lo stile non è RPC, WrapperName esegue il mapping al nome dell'elemento a cui fa riferimento wsdl:message /wsdl:part con @name impostato su "parameters". |
WrapperNamespace |
Se lo stile non è RPC, WrapperNamespace esegue il mapping allo spazio dei nomi degli elementi 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 un elemento wrapper esiste (stile incapsulato da documenti o stile RPC). In caso contrario, il primo elemento wsdl:message /wsdl:part nel messaggio. |
Parti del messaggio
Un'istanza MessagePartDescription
esegue il mapping a un elemento wsdl:message
/wsdl:part
e al tipo di XML Schema o elemento 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 fa riferimento la parte del messaggio. |
Namespace |
Spazio dei nomi dell'elemento al quale fa riferimento la parte del messaggio. |
Index |
Indice dell'elemento wsdl:message /wsdl:part per il messaggio. |
ProtectionLevel |
Asserzioni di protezione in un criterio di sicurezza associato alla definizione di wsdl:message per questa parte del messaggio. Nel criterio vengono impostati parametri per fare riferimento alla parte del messaggio specifica. |
MessageType |
Tipo di XML Schema dell'elemento al quale fa riferimento la parte del messaggio. |
Intestazioni del messaggio
Un'istanza MessageHeaderDescription
è una parte del messaggio che esegue il mapping a un'associazione soap:header
per la parte del messaggio.
Guasti
Un'istanza FaultDescription
esegue il mapping a una definizione di wsdl:portType
/wsdl:operation
/wsdl:fault
e alla relativa definizione di wsdl:message
associata. L'elemento wsdl:message
viene aggiunto allo stesso spazio dei nomi di destinazione del tipo di porta WSDL associato. L'elemento wsdl:message
ha una sola parte di messaggio denominata "detail" che fa riferimento all'elemento XML Schema che corrisponde al valore della proprietà DefaultType
per l'istanza FaultDescription
.
Proprietà | Mapping WSDL |
---|---|
Name |
Valore wsdl:portType /wsdl:operation /wsdl:fault /@name dell'errore. |
Namespace |
Spazio dei nomi dell'elemento XML Schema al quale fa riferimento il messaggio di dettaglio dell'errore. |
Action |
Azione SOAP o WS-Addressing per l'errore. |
ProtectionLevel |
Asserzioni di protezione in un criterio di sicurezza associato alla definizione di wsdl:message per questo errore. |
DetailType |
Tipo XML Schema dell'elemento al quale fa riferimento il messaggio dettagliato. |
Name, ContractDescription.Name, OperationDescription.Name, |
Usato per derivare il valore wsdl:message /@name per il messaggio di errore. |