Freigeben über


Exportieren von benutzerdefinierten Metadaten für eine WCF-Erweiterung

In Windows Communication Foundation (WCF) ist der Metadatenexport der Prozess der Beschreibung von Dienstendpunkten und das Projizieren in eine parallele, standardisierte Darstellung, die Clients verwenden können, um zu verstehen, wie der Dienst verwendet wird. Benutzerdefinierte Metadaten bestehen aus XML-Elementen, die von den vom System bereitgestellten Metadatenexporteuren nicht exportiert werden können. In der Regel umfasst dies benutzerdefinierte WSDL-Elemente für benutzerdefinierte Verhaltensweisen und Bindungselemente und Richtlinien assertionen zu den Funktionen und Anforderungen von Bindungen und Verträgen.

In diesem Abschnitt wird das Exportieren von benutzerdefinierten WSDL- oder Richtlinienassertionen beschrieben, wobei der Exportprozess selbst nicht im Fokus steht. Weitere Informationen zur Verwendung der Typen, die Metadaten exportieren und importieren, unabhängig davon, ob die Metadaten benutzerdefinierte oder vom System konstruiert sind, finden Sie unter Exportieren und Importieren von Metadaten.

Überblick

Wenn Metadaten mithilfe der System.ServiceModel.Description.ServiceMetadataBehavior veröffentlicht werden, wird die System.ServiceModel.Description.ServiceDescription untersucht, und XSD sowie WSDL -- einschließlich Richtlinienerklärungen -- werden für alle Verträge und Bindungen generiert, die WCF mit den vom System bereitgestellten Attributen und Bindungen unterstützen kann. Benutzerdefinierte Verhaltensattribute oder Bindungselemente erfordern jedoch Unterstützung, bevor sie ordnungsgemäß exportiert werden können.

In diesem Abschnitt wird folgendes beschrieben:

  1. Wie man die Schnittstelle System.ServiceModel.Description.IWsdlExportExtension implementiert, die Ihnen die WSDL-Generierungsdaten freigibt, bevor das WSDL veröffentlicht wird.

  2. Implementieren und Verwenden der System.ServiceModel.Description.IPolicyExportExtension Schnittstelle, die Ihnen die Richtliniendaten vor dem Export der Richtlinienaussagen in WSDL-Daten zur Verfügung stellt.

Weitere Informationen zum Importieren von benutzerdefinierten WSDL- und Richtlinien assertionen finden Sie unter Importieren von benutzerdefinierten Metadaten für eine WCF-Erweiterung.

Exportieren von benutzerdefinierten WSDL-Elementen

Implementieren Sie das IWsdlExportExtension bei einem Vorgangsverhalten, einem Vertragsverhalten, einem Endpunktverhalten oder einem Bindungselement (IOperationBehavior, IContractBehavior, IEndpointBehavior bzw. System.ServiceModel.Channels.BindingElement entsprechend) und fügen Sie die Verhaltensweisen oder Bindungselemente in die Beschreibung des Dienstes ein, den Sie exportieren möchten. (Weitere Informationen zum Einfügen von Verhaltensweisen finden Sie unter Konfigurieren und Erweitern der Laufzeit mit Verhalten). Die IWsdlExportExtension wird für jeden Endpunkt aufgerufen, wobei jeder Endpunkt zuerst den Vertrag exportiert, wenn er noch nicht bereits exportiert wurde. Je nach Ihren Anforderungen können Sie an beiden Exportprozessen teilnehmen:

Die ExportContract Methode wird für alle IWsdlExportExtension Implementierungen innerhalb der System.ServiceModel.Description.ContractDescription zu exportierenden Instanz aufgerufen. Die ExportEndpoint Methode wird auf allen IWsdlExportExtension Implementierungen mit der System.ServiceModel.Description.ServiceEndpoint Instanz aufgerufen, die exportiert wird.

Weitere Informationen finden Sie unter How to: Export Custom WSDL und dem Beispiel Custom WSDL Publication.

Exportieren von benutzerdefinierten Richtlinienassertionen

Implementieren Sie IPolicyExportExtension auf BindingElement, und fügen Sie der Bindung das Bindungselement hinzu, um benutzerdefinierte Richtlinienassertionen über den Bindungssupport und die Vertragsfähigkeiten in WSDL zu schreiben. Der IPolicyExportExtension Aufruf erfolgt einmal beim Exportieren des implementierten Bindungselements in einer Bindung und übergibt die PolicyConversionContext Methode an die ExportPolicy Methode. Sie können die Methoden in der Instanz PolicyConversionContext verwenden, um die Richtlinienassertionen, die der WSDL-Bindung am Nachrichten-, Vorgangs- oder Endpunktsubjekt angehängt sind, zu erweitern.

Weitere Informationen finden Sie unter Vorgehensweise: Exportieren von benutzerdefinierten Richtlinienassertionen.

Siehe auch