Condividi tramite


Esportazione e importazione di metadati

In Windows Communication Foundation (WCF), l'esportazione dei metadati è il processo utilizzato per descrivere gli endpoint di servizio e quindi proiettarli in una rappresentazione parallela e standardizzata che i client possono utilizzare per comprendere come utilizzare il servizio. L'importazione dei metadati del servizio è il processo di generazione di istanze o parti di ServiceEndpoint dai metadati del servizio.

Esportazione dei metadati

Per esportare metadati da istanze di System.ServiceModel.Description.ServiceEndpoint, utilizzare un'implementazione della classe astratta MetadataExporter. Il tipo WsdlExporter è l'implementazione della classe astratta MetadataExporter inclusa con WCF.

Il tipo System.ServiceModel.Description.WsdlExporter genera metadati Web Services Description Language (WSDL) con allegate espressioni di criteri incapsulate in un'istanza di MetadataSet. È possibile utilizzare un'istanza di System.ServiceModel.Description.WsdlExporter per esportare in modo iterativo metadati per oggetti ContractDescription e ServiceEndpoint. È inoltre possibile esportare una raccolta di oggetti ServiceEndpoint e associarli a un nome del servizio specifico.

Nota

WsdlExporter può essere utilizzato solo per esportare metadati da istanze ContractDescription che contengono informazioni di tipo Common Language Runtime (CLR), ad esempio un'istanza ContractDescription creata utilizzando il metodo ContractDescription.GetContract o creata come parte di ServiceDescription per un'istanza ServiceHost. Non è possibile utilizzare WsdlExporter per esportare metadati dalle istanze ContractDescription importate dai metadati del servizio o create senza informazioni sul tipo.

Importazione dei metadati

Importazione di documenti WSDL

Per importare i metadati del servizio in WCF è necessario utilizzare un'implementazione della classe astratta MetadataImporter. Il tipo System.ServiceModel.Description.WsdlImporter è l'implementazione della classe astratta MetadataImporter inclusa con WCF. Il tipo WsdlImporter importa metadati WSDL insieme ai relativi criteri allegati. Questi elementi vengono quindi raggruppati in un oggetto MetadataSet.

Il tipo WsdlImporter consente di controllare il modo in cui importare i metadati. È possibile importare tutti gli endpoint, tutte le associazioni o tutti i contratti. È possibile importare tutti gli endpoint associati a un servizio WSDL, a un'associazione o a un tipo di porta specifici. È inoltre possibile importare l'endpoint per una porta WSDL specifica, l'associazione per un'associazione WSDL specifica o il contratto per un tipo di porta WSDL specifico.

WsdlImporter espone anche una proprietà KnownContracts che consente di specificare un set di contratti che non è necessario importare. WsdlImporter utilizza i contratti nella proprietà KnownContracts anziché importare un contratto con lo stesso nome completo dai metadati.

Importazione di criteri

Il tipo WsdlImporter raccoglie le espressioni di criteri allegate ai soggetti di messaggio, operazione ed endpoint, quindi utilizza le implementazioni IPolicyImportExtension nella raccolta PolicyImportExtensions per importare le espressioni di criteri.

La logica di importazione del criterio gestisce automaticamente i riferimenti del criterio alle espressioni di criteri nello stesso documento WSDL ed è identificata da un attributo wsu:Id o xml:id. La logica di importazione del criterio protegge le applicazioni da riferimenti del criterio circolari limitando la dimensione di un'espressione di criteri a 4096 nodi, in cui un nodo è uno degli elementi seguenti: wsp:Policy, wsp:All, wsp:ExactlyOne, wsp:policyReference.

La logica di importazione del criterio normalizza inoltre automaticamente le espressioni di criteri. Espressioni di criteri annidate e l'attributo wsp:Optional non sono normalizzati. Il quantità di elaborazione di normalizzazione eseguita è limitata a 4096 passaggi, in cui ogni passaggio produce un'asserzione di criteri, o un elemento figlio di un elemento wsp:ExactlyOne.

Il tipo WsdlImporter tenta un massimo di 32 combinazioni di alternative di criteri allegate ai diversi soggetti di criterio WSDL. Se nessuna combinazione viene importata correttamente, viene utilizzata la prima combinazione per costruire un'associazione personalizzata parziale.

Gestione errori

Entrambi i tipi MetadataExporter e MetadataImporter espongono una proprietà Errors che può contenere una raccolta di messaggi di errore e di avviso riscontrati rispettivamente durante i processi di esportazione e di importazione, che possono essere utilizzati durante l'implementazione degli strumenti.

Il tipo WsdlImporter di norma genera un'eccezione per un'eccezione intercettata durante il processo di importazione e aggiunge un errore corrispondente alla propria proprietà Errors. I metodi ImportAllContracts, ImportAllBindings, ImportAllEndpoints e ImportEndpoints, tuttavia, non generano queste eccezioni, pertanto è necessario controllare la proprietà Errors per stabilire se si sono verificati problemi durante la chiamata di questi metodi.

Il tipo WsdlExporter esegue il rethrow di qualsiasi eccezione intercettata durante il processo di esportazione. Queste eccezioni non vengono acquisite come errori nella proprietà Errors. Quando WsdlExporter genera un'eccezione, si trova in uno stato di errore e non può essere riutilizzato. WsdlExporter aggiunge avvisi alla sua proprietà Errors quando non è possibile esportare un'operazione perché utilizza azioni con caratteri jolly e quando vengono riscontrati nomi di associazioni duplicati.

In questa sezione

Procedura: Importare metadati negli endpoint di servizio
Descrive come importare i metadati scaricati in oggetti di descrizione.

Procedura: Esportare metadati dagli endpoint di servizio
Descrive come esportare oggetti di descrizione in metadati.

Informazioni di riferimento su ServiceDescription e WSDL
Descrive il mapping tra gli oggetti di descrizione e WSDL.

Procedura: Usare Svcutil.exe per esportare metadati dal codice del servizio compilato
Descrive l'utilizzo di Svcutil.exe per esportare metadati per servizi, contratti e tipi di dati in assembly compilati:

Informazioni di riferimento sullo schema del contratto di dati
Descrive il sottoinsieme dell'XML Schema (XSD) utilizzato da DataContractSerializer per descrivere i tipi Common Language Runtime (CLR) per la serializzazione XML.

Riferimento

WsdlExporter

WsdlImporter

Vedi anche