Exportieren von benutzerdefinierten Metadaten für eine WCF-Erweiterung
In Windows Communication Foundation (WCF) ist der Metadatenexport der Prozess zum Beschreiben der Dienstendpunkte und zum Projizieren der Dienstendpunkte in eine parallele, standardisierte Darstellung, die Clients zur Nutzung des Diensts verwenden können. Benutzerdefinierte Metadaten bestehen aus XML-Elementen, die die vom System bereitgestellten Metadaten-Exporteure nicht exportieren können. Normalerweise gehören hierzu benutzerdefinierte Elemente für benutzerdefinierte Verhalten und Bindungselemente und Richtlinienassertionen über die Fähigkeiten und Anforderungen von Bindungen und Verträgen.
Dieser Abschnitt beschreibt den Export von benutzerdefinierten WSDL- oder Richtlinienassertionen und konzentriert sich nicht auf den Exportprozess selbst. Weitere Informationen über die Nutzung der Typen, die Metadaten unabhängig davon, ob sie benutzerdefiniert oder systemkonstruiert sind, exportieren und importieren, finden Sie unter Exportieren und Importieren von Metadaten.
Übersicht
Wenn Metadaten über das System.ServiceModel.Description.ServiceMetadataBehavior veröffentlicht werden, wird System.ServiceModel.Description.ServiceDescription untersucht und XSD und WSDL – einschließlich der Richtlinienassertionen – werden für alle Verträge und Bindungen generiert, die WCF unter Einsatz von vom System gelieferten Attributen und Bindungen unterstützen kann. Benutzerdefinierte Verhaltensattribute oder Bindungselemente erfordern jedoch Unterstützung, bevor sie ordnungsgemäß exportiert werden können.
Dieser Abschnitt beschreibt:
Wie man die Schnittstelle System.ServiceModel.Description.IWsdlExportExtension implementiert, die Ihnen die WSDL-Generierungsdaten freigibt, bevor das WSDL veröffentlicht wird.
Wie man die Schnittstelle System.ServiceModel.Description.IPolicyExportExtension implementiert und nutzt, die Ihnen die Richtliniendaten freigibt, bevor die Richtlinienassertionen in WSDL-Daten exportiert werden.
Weitere Informationen zum Importieren von benutzerdefinierten WSDL- und Richtlinienassertionen finden Sie unter Importieren von benutzerdefinierten Metadaten für eine WCF-Erweiterung.
Exportieren von benutzerdefinierten WSDL-Elementen
Implementieren Sie IWsdlExportExtension auf einem Vorgangsverhalten, Vertragsverhalten, Endpunktverhalten oder Bindungselement (jeweils IOperationBehavior, IContractBehavior, IEndpointBehavior oder System.ServiceModel.Channels.BindingElement), und fügen Sie die Verhalten oder Bindungselemente in die Beschreibung des Diensts ein, den Sie zu exportieren versuchen. (Weitere Informationen zum Einfügen von Verhalten finden Sie unter Konfigurieren und Erweitern der Laufzeit mit Verhalten.) IWsdlExportExtension wird für jeden Endpunkt aufgerufen, und jeder Endpunkt exportiert zunächst den Vertrag, wenn dieser nicht bereits exportiert worden ist. Sie können je nach Ihren Bedürfnissen an einem der beiden Exportprozesse teilnehmen:
Verwenden Sie WsdlContractConversionContext, um die exportierten Metadaten in der Methode ExportContract zu ändern.
Verwenden Sie WsdlEndpointConversionContext, um die exportierten Metadaten des Endpunkts in der Methode ExportEndpoint zu ändern.
Die Methode ExportContract wird auf allen IWsdlExportExtension-Implementierungen innerhalb der Instanz System.ServiceModel.Description.ContractDescription, die exportiert wird, aufgerufen. Die Methode ExportEndpoint wird auf allen IWsdlExportExtension-Implementierungen mit der Instanz System.ServiceModel.Description.ServiceEndpoint, die exportiert wird, aufgerufen.
Weitere Informationen finden Sie unter Vorgehensweise: Exportieren von benutzerdefinierter WSDL und der Benutzerdefinierten WSDL-Beispielveröffentlichung.
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. IPolicyExportExtension wird einmal aufgerufen, wenn das implementierte Bindungselement in eine Bindung exportiert wird, und reicht PolicyConversionContext an die Methode ExportPolicy weiter. 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.