Condividi tramite


Esportazione e importazione di metadati

In Windows Communication Foundation (WCF), l'esportazione dei metadati è il processo utilizzato per descrivere gli endpoint di un servizio e quindi proiettarli in una rappresentazione parallela standardizzata che i client possono utilizzare allo scopo di 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 è un'implementazione della classe astratta MetadataExporter fornita da 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 un insieme 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 di un servizio in WCF è necessario utilizzare un'implementazione della classe astratta MetadataImporter. Il tipo System.ServiceModel.Description.WsdlImporter è un'implementazione della classe astratta MetadataImporter fornita da 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 insieme 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 nell'insieme 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 nidificate 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 degli errori

Entrambi i tipi MetadataExporter e MetadataImporter espongono una proprietà Errors che può contenere un insieme 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.

Argomenti della sezione

Riferimenti

WsdlExporter

WsdlImporter

Vedere anche

Concetti

Esportazione di metadati personalizzati per un'estensione WCF
Importazione di metadati personalizzati per un'estensione WCF