Condividi tramite


Esportazione di metadati personalizzati per un'estensione WCF

In Windows Communication Foundation (WCF), l'esportazione dei metadati è il processo di descrizione degli endpoint di servizio e di proiettarli in una rappresentazione parallela standardizzata che i client possono usare per comprendere come usare il servizio. I metadati personalizzati sono costituiti da elementi XML che gli esportatori di metadati forniti dal sistema non possono esportare. In genere, sono inclusi elementi WSDL personalizzati per comportamenti definiti dall'utente e elementi di associazione e asserzioni di criteri relativi alle funzionalità e ai requisiti delle associazioni e dei contratti.

Questa sezione descrive l'esportazione di asserzioni WSDL o criteri personalizzate e non si concentra sul processo di esportazione stesso. Per altre informazioni su come usare i tipi che esportano e importano metadati indipendentemente dal fatto che i metadati siano personalizzati o costruiti dal sistema, vedere Esportazione e importazione di metadati.

Informazioni generali

Quando i metadati vengono pubblicati usando System.ServiceModel.Description.ServiceMetadataBehavior, System.ServiceModel.Description.ServiceDescription vengono esaminati e XSD e WSDL, incluse le asserzioni di criteri, vengono generati per tutti i contratti e le associazioni che WCF può supportare usando attributi e associazioni forniti dal sistema. Tuttavia, gli attributi di comportamento personalizzati o gli elementi di associazione richiedono il supporto prima che possano essere esportati correttamente.

Questa sezione descrive:

  1. Come implementare e utilizzare l'interfaccia System.ServiceModel.Description.IWsdlExportExtension, che espone all'utente i dati di generazione WSDL prima di pubblicare il WSDL.

  2. Come implementare e usare l'interfaccia System.ServiceModel.Description.IPolicyExportExtension che espone i dati della policy prima di esportare le asserzioni di policy nei dati WSDL.

Per altre informazioni sull'importazione di asserzioni WSDL e criteri personalizzate, vedere Importazione di metadati personalizzati per un'estensione WCF.

Esportazione di elementi WSDL personalizzati

Implementa su IWsdlExportExtension il comportamento dell'operazione, il comportamento del contratto, il comportamento dell'endpoint o l'elemento di associazione (rispettivamente IOperationBehavior, IContractBehavior, IEndpointBehavior o System.ServiceModel.Channels.BindingElement) e inserisci i comportamenti o gli elementi di associazione nella descrizione del servizio che si sta tentando di esportare. Per altre informazioni sull'inserimento di comportamenti, vedere Configurazione ed estensione del runtime con comportamenti. Viene IWsdlExportExtension chiamato per ogni endpoint e ogni endpoint esporta prima il contratto se non è già stato esportato. È possibile partecipare a uno dei due processi di esportazione, a seconda delle esigenze:

Il ExportContract metodo viene chiamato su tutte le IWsdlExportExtension implementazioni all'interno dell'istanza System.ServiceModel.Description.ContractDescription esportata. Il metodo ExportEndpoint viene chiamato su tutte le implementazioni IWsdlExportExtension con l'istanza System.ServiceModel.Description.ServiceEndpoint che viene esportata.

Per altre informazioni, vedere Procedura: Esportare WSDL personalizzati e la pubblicazione WSDL personalizzata di esempio.

Esportazione di asserzioni di criteri personalizzate

Implementare il IPolicyExportExtension su un BindingElement e aggiungere l'elemento di associazione per scrivere asserzioni di criteri personalizzati riguardanti il supporto dell'associazione e le capacità del contratto nel WSDL. IPolicyExportExtension viene chiamato una volta quando si esporta l'elemento di associazione implementato in un'associazione e passa PolicyConversionContext al metodo ExportPolicy. È possibile usare i metodi nell'istanza PolicyConversionContext di per aggiungere alle asserzioni di criteri associate all'associazione WSDL in corrispondenza dell'oggetto del messaggio, dell'operazione o dell'endpoint.

Per ulteriori informazioni, vedere Come esportare asserzioni di politiche personalizzate.

Vedere anche