Freigeben über


Exportieren und Importieren von Metadaten

In Windows Communication Foundation (WCF) ist das Exportieren von Metadaten 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. Das Importieren von Dienstmetadaten ist der Prozess des Generierens ServiceEndpoint von Instanzen oder Teilen aus Dienstmetadaten.

Exportieren von Metadaten

Verwenden Sie zum Exportieren von Metadaten aus System.ServiceModel.Description.ServiceEndpoint Instanzen eine Implementierung der MetadataExporter abstrakten Klasse. Der WsdlExporter Typ ist eine Implementierung der mit WCF enthaltenen abstrakten Klasse MetadataExporter.

Der System.ServiceModel.Description.WsdlExporter Typ generiert Web Services Description Language (WSDL)-Metadaten mit angefügten Richtlinienausdrücken, die in einer MetadataSet Instanz gekapselt sind. Sie können eine System.ServiceModel.Description.WsdlExporter Instanz verwenden, um Metadaten für ContractDescription Objekte und ServiceEndpoint Objekte iterativ zu exportieren. Sie können auch eine Sammlung von ServiceEndpoint Objekten exportieren und sie einem bestimmten Dienstnamen zuordnen.

Hinweis

Sie können nur WsdlExporter verwenden, um Metadaten aus ContractDescription-Instanzen zu exportieren, die CLR-Typinformationen (Common Language Runtime) enthalten, z. B. eine ContractDescription-Instanz, die mit der ContractDescription.GetContract-Methode erstellt wurde oder als Teil der ServiceDescription für eine ServiceHost-Instanz erstellt wurde. Sie können das WsdlExporter nicht verwenden, um Metadaten aus ContractDescription-Instanzen zu exportieren, die aus Dienstmetadaten importiert wurden oder ohne Typinformationen erstellt wurden.

Importieren von Metadaten

Importieren von WSDL-Dokumenten

Verwenden Sie zum Importieren von Dienstmetadaten in WCF eine Implementierung der MetadataImporter abstrakten Klasse. Der System.ServiceModel.Description.WsdlImporter Typ ist eine Implementierung der mit WCF enthaltenen abstrakten Klasse MetadataImporter. Der WsdlImporter Typ importiert WSDL-Metadaten mit angefügten Richtlinien, die in einem MetadataSet Objekt gebündelt sind.

Mit dem WsdlImporter Typ können Sie steuern, wie die Metadaten importiert werden. Sie können alle Endpunkte, alle Bindungen oder alle Verträge importieren. Sie können alle Endpunkte importieren, die einem bestimmten WSDL-Dienst, einer Bindung oder einem bestimmten Porttyp zugeordnet sind. Sie können den Endpunkt auch für einen bestimmten WSDL-Port, die Bindung für eine bestimmte WSDL-Bindung oder den Vertrag für einen bestimmten WSDL-Porttyp importieren.

Außerdem stellt WsdlImporter eine KnownContracts-Eigenschaft bereit, mit der Sie eine Reihe von Verträgen festlegen können, die nicht importiert werden müssen. Der WsdlImporter-Typ verwendet die in der KnownContracts-Eigenschaft angegebenen Verträge, statt aus den Metadaten Verträge zu importieren, die über den gleichen qualifizierten Namen verfügen.

Importieren von Richtlinien

Der WsdlImporter Typ sammelt die Richtlinienausdrücke, die an die Themen Nachrichten, Vorgänge und Endpunktrichtlinien angefügt sind, und verwendet dann die IPolicyImportExtension Implementierungen in der PolicyImportExtensions Auflistung, um die Richtlinienausdrücke zu importieren.

Die Richtlinienimportlogik behandelt automatisch Richtlinienverweise auf Richtlinienausdrücke im selben WSDL-Dokument und wird mit einem wsu:Id Oder xml:id Attribut identifiziert. Die Richtlinienimportlogik schützt Anwendungen vor Zirkelrichtlinienverweise, indem die Größe eines Richtlinienausdrucks auf 4096 Knoten beschränkt wird, wobei ein Knoten eines der folgenden Elemente ist: wsp:Policy, , wsp:All, wsp:ExactlyOne. wsp:policyReference

Die Richtlinienimportlogik normalisiert auch automatisch Richtlinienausdrücke. Geschachtelte Richtlinienausdrücke und das wsp:Optional Attribut werden nicht normalisiert. Der Umfang der Normalisierungsverarbeitung ist auf 4096 Schritte beschränkt, wobei jeder Schritt eine Richtlinienaussage oder ein untergeordnetes Element eines wsp:ExactlyOne Elements liefert.

Der WsdlImporter Typ versucht bis zu 32 Kombinationen von Richtlinienalternativen, die den verschiedenen WSDL-Richtlinienthemen zugeordnet sind. Wenn keine Kombination sauber importiert wird, wird die erste Kombination verwendet, um eine partielle benutzerdefinierte Bindung zu erstellen.

Fehlerbehandlung

Sowohl die MetadataExporter- als auch die MetadataImporter-Typen stellen eine Errors-Eigenschaft zur Verfügung, die eine Sammlung von Fehler- und Warnmeldungen enthalten kann, die während der jeweiligen Export- und Importprozesse aufgetreten sind und bei der Implementierung von Tools verwendet werden können.

Im Allgemeinen löst der WsdlImporter Typ eine Ausnahme aus, wenn während des Importvorgangs eine Ausnahme abgefangen wird, und fügt seiner Eigenschaft Errors einen entsprechenden Fehler hinzu. Die ImportAllContractsMethoden , ImportAllBindings, , ImportAllEndpointsund ImportEndpoints Methoden lösen diese Ausnahmen jedoch nicht aus. Daher müssen Sie die Errors Eigenschaft überprüfen, um zu ermitteln, ob beim Aufrufen dieser Methoden Probleme aufgetreten sind.

Der WsdlExporter Typ löst entsprechende Ausnahmen für alle während des Exportprozesses abgefangenen Ausnahmen aus. Diese Ausnahmen werden nicht als Fehler in der Errors Eigenschaft erfasst. Sobald die WsdlExporter Ausnahme ausgelöst wird, befindet sie sich in einem fehlerhaften Zustand und kann nicht wiederverwendet werden. Der WsdlExporter-Typ fügt seiner Errors-Eigenschaft Warnungen hinzu, wenn ein Vorgang nicht exportiert werden kann, weil er Platzhalteraktionen verwendet, und wenn doppelte Bindungsnamen auftreten.

In diesem Abschnitt

Vorgehensweise: Importieren von Metadaten in Dienstendpunkte Beschreibt, wie heruntergeladene Metadaten in Beschreibungsobjekte importiert werden.

Vorgehensweise: Exportieren von Metadaten aus Dienstendpunkten Beschreibt, wie Beschreibungsobjekte in Metadaten exportiert werden.

ServiceDescription und WSDL-Referenz Beschreibt die Zuordnung zwischen den Beschreibungsobjekten und WSDL.

Vorgehensweise: Verwenden von Svcutil.exe zum Exportieren von Metadaten aus kompiliertem Dienstcode Beschreibt die Verwendung von Svcutil.exe zum Exportieren von Metadaten für Dienste, Verträge und Datentypen in kompilierten Assemblys.

Datenvertragsschemareferenz Beschreibt die Teilmenge des XML-Schemas (XSD), das von DataContractSerializer verwendet wird, um Common Language Runtime (CLR)-Typen für die XML-Serialisierung zu beschreiben.

Referenz

WsdlExporter

WsdlImporter

Siehe auch