Exportieren und Importieren von MetadatenExporting and Importing Metadata

In Windows Communication Foundation (WCF) ist Exportieren von Metadaten der Prozess der Beschreibung von Dienstendpunkten und Ihrer Projektion in eine parallele, standardisierte Darstellung, die Clients verwenden können, wie Sie den Dienst verwenden können.In Windows Communication Foundation (WCF), exporting metadata is the process of describing service endpoints and projecting them into a parallel, standardized representation that clients can use to understand how to use the service. Beim Import von Dienstmetadaten werden ServiceEndpoint-Instanzen oder Teile davon aus Dienstmetadaten generiert.Importing service metadata is the process of generating ServiceEndpoint instances or parts from service metadata.

Exportieren von MetadatenExporting Metadata

Mit einer Implementierung der abstrakten System.ServiceModel.Description.ServiceEndpoint-Klasse können Sie Metadaten aus MetadataExporter-Instanzen exportieren.To export metadata from System.ServiceModel.Description.ServiceEndpoint instances, use an implementation of the MetadataExporter abstract class. Die WsdlExporter Typ ist die Implementierung der MetadataExporter abstrakte Klasse, die in WCF enthalten.The WsdlExporter type is the implementation of the MetadataExporter abstract class included with WCF.

Der System.ServiceModel.Description.WsdlExporter-Typ generiert WSDL (Web Services Description Language)-Metadaten mit angefügten Richtlinienausdrücken, die in einer MetadataSet-Instanz gekapselt sind.The System.ServiceModel.Description.WsdlExporter type generates Web Services Description Language (WSDL) metadata with attached policy expressions encapsulated in a MetadataSet instance. Sie können eine System.ServiceModel.Description.WsdlExporter-Instanz verwenden, um Metadaten für ContractDescription-Objekte und ServiceEndpoint-Objekte iterativ zu exportieren.You can use a System.ServiceModel.Description.WsdlExporter instance to iteratively export metadata for ContractDescription objects and ServiceEndpoint objects. Sie können auch eine Auflistung von ServiceEndpoint-Objekten exportieren und sie einem bestimmten Dienstnamen zuordnen.You can also export a collection of ServiceEndpoint objects and associate them with a specific service name.

Hinweis

WsdlExporter kann nur zum Exportieren von Metadaten aus ContractDescription-Instanzen verwendet werden, die Common Language Runtime (CLR)-Typinformationen enthalten, wie z. B. eine ContractDescription-Instanz, die mit der ContractDescription.GetContract-Methode oder als Teil der ServiceDescription für eine ServiceHost-Instanz erstellt wurde.You can only use the WsdlExporter to export metadata from ContractDescription instances that contain common language runtime (CLR) type information, such as a ContractDescription instance created using the ContractDescription.GetContract method or created as part of the ServiceDescription for a ServiceHost instance. Sie können WsdlExporter nicht zum Exportieren von Metadaten aus ContractDescription-Instanzen verwenden, die aus Dienstmetadaten stammen oder ohne Typinformationen erstellt wurden.You cannot use the WsdlExporter to export metadata from ContractDescription instances imported from service metadata or constructed without type information.

Importieren von MetadatenImporting Metadata

Importieren von WSDL-DokumentenImporting WSDL Documents

Zum Importieren von Metadaten von Diensten in WCF mit einer Implementierung der der MetadataImporter abstrakte Klasse.To import service metadata in WCF, use an implementation of the MetadataImporter abstract class. Die System.ServiceModel.Description.WsdlImporter Typ ist die Implementierung der MetadataImporter abstrakte Klasse, die in WCF enthalten.The System.ServiceModel.Description.WsdlImporter type is the implementation of the MetadataImporter abstract class included with WCF. Der WsdlImporter-Typ importiert WSDL-Metadaten mit angefügten Richtlinien, die in einem MetadataSet-Objekt zusammengefasst sind.The WsdlImporter type imports WSDL metadata with attached policies bundled in a MetadataSet object.

Beim WsdlImporter-Typ können Sie steuern, wie die Metadaten importiert werden.The WsdlImporter type gives you control over how to import the metadata. Sie können alle Endpunkte, alle Bindungen oder alle Verträge importieren.You can import all of the endpoints, all of the bindings, or all of the contracts. Sie können alle Endpunkte importieren, die einem bestimmten WSDL-Dienst, einer bestimmten Bindung oder einem bestimmten Anschlusstyp zugeordnet sind.You can import all of the endpoints associated with a specific WSDL service, binding, or port type. Zudem können Sie den Endpunkt für einen bestimmten WSDL-Anschluss, die Bindung für eine bestimmte WSDL-Bindung oder den Vertag für einen bestimmten WSDL-Anschlusstyp importieren.You can also import the endpoint for a specific WSDL port, the binding for a specific WSDL binding or the contract for a specific WSDL port type.

Der WsdlImporter-Typ macht die KnownContracts-Eigenschaft verfügbar, die es Ihnen ermöglicht, eine Gruppe von Verträgen anzugeben, die nicht importiert werden müssen.The WsdlImporter also exposes a KnownContracts property that allows you to specify a set of contracts that do not need to be imported. 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.The WsdlImporter uses the contracts in the KnownContracts property instead of importing a contract with the same qualified name from the metadata.

Importieren von RichtlinienImporting Policies

Der WsdlImporter-Typ sammelt die Richtlinienausdrücke, die den Nachrichten-, Vorgangs- und Endpunktrichtliniensubjekts angehängt sind, und importiert die Richtlinienausdrücke dann mithilfe der IPolicyImportExtension-Implementierungen aus der PolicyImportExtensions-Auflistung.The WsdlImporter type collects the policy expressions attached to the message, operation, and endpoint policy subjects and then uses the IPolicyImportExtension implementations in the PolicyImportExtensions collection to import the policy expressions.

Das Richtlinienimportprogramm verarbeitet automatisch Richtlinienverweise auf Richtlinienausdrücke im gleichen WSDL-Dokument und wird durch das wsu:Id-Attribut oder das xml:id-Attribut angegeben.The policy import logic automatically handles policy references to policy expressions in the same WSDL document and is identified with a wsu:Id or xml:id attribute. Das Richtlinienimportprogramm schützt Anwendungen vor zirkulären Verweisen, indem es die Größe von Richtlinienausdrücken auf 4096 Knoten beschränkt, wobei ein Knoten eines der folgenden Elemente sein kann: wsp:Policy, wsp:All, wsp:ExactlyOne, wsp:policyReference.The policy import logic protects applications against circular policy references by limiting the size of a policy expression to 4096 nodes, where a node is a one of the following elements: wsp:Policy, wsp:All, wsp:ExactlyOne, wsp:policyReference.

Das Richtlinienimportprogramm normalisiert Richtlinienausdrücke auch automatisch.The policy import logic also automatically normalizes policy expressions. Geschachtelte Richtlinienausdrücke und das wsp:Optional-Attribut werden nicht normalisiert.Nested policy expressions and the wsp:Optional attribute are not normalized. Die normalisierte Verarbeitung wird auf höchsten 4096 Schritte beschränkt, wobei jeder Schritt eine Richtlinienassertion oder ein untergeordnetes Element eines wsp:ExactlyOne-Elements ergibt.The amount of normalization processing done is limited to 4096 steps, where each step yields a policy assertion, or a child element of a wsp:ExactlyOne element.

Der WsdlImporter-Typ probiert bis zu 32 Kombinationen von Richtlinienalternativen aus, die verschiedenen WSDL-Richtliniensubjekten angehängt sind.The WsdlImporter type tries up to 32 combinations of policy alternatives attached to the different WSDL policy subjects. Wenn keine Kombination sauber importiert werden kann, wird die erste Kombination zur Erstellung einer teilweise benutzerdefinierten Bindung verwendet.If no combination imports cleanly, the first combination is used to construct a partial custom binding.

FehlerbehandlungError Handling

Sowohl der MetadataExporter-Typ als auch der MetadataImporter-Typ machen eine Errors-Eigenschaft verfügbar, die eine Auflistung von Meldungen für Fehler und Warnungen enthalten kann, die während des Export- bzw. Importprozesses auftreten können und die in der Implementierung von Dienstprogrammen verwendet werden können.Both the MetadataExporter and the MetadataImporter types expose an Errors property that can contain a collection of error and warning messages encountered during the export and import processes, respectively, that can be used when implementing tools.

Der WsdlImporter-Typ löst im Allgemeinen eine Ausnahme für jede Ausnahme aus, die während des Importvorgangs abgefangen wurde, und fügt der Errors-Eigenschaft einen entsprechenden Fehler hinzu.The WsdlImporter type generally throws an exception for an exception caught during the import process and adds a corresponding error to its Errors property. Da die Methoden ImportAllContracts, ImportAllBindings, ImportAllEndpoints und ImportEndpoints diese Ausnahmen dagegen nicht auslösen, müssen Sie die Errors-Eigenschaft überprüfen, um zu ermitteln, ob während des Aufrufs dieser Methoden Probleme aufgetreten sind.The ImportAllContracts, ImportAllBindings, ImportAllEndpoints, and ImportEndpoints methods, however, do not throw these exceptions, so you must check the Errors property to determine if any issues occurred when calling these methods.

Der WsdlExporter Typ löst entsprechende Ausnahmen für alle während des Exportprozesses abgefangenen Ausnahmen aus.The WsdlExporter type rethrows any exceptions caught during the export process. Diese Ausnahmen werden nicht als Fehler in der Errors-Eigenschaft aufgezeichnet.These exceptions are not captured as errors in the Errors property. Sobald der WsdlExporter-Typ eine Ausnahme auslöst, hat er in einen Fehlerstatus und kann nicht wiederverwendet werden.Once the WsdlExporter throws an exception, it is in a faulted state and cannot be reused. 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.The WsdlExporter does add warnings to its Errors property when an operation cannot be exported because it uses wildcard actions and when duplicate binding names are encountered.

In diesem AbschnittIn This Section

Vorgehensweise: Importieren von Metadaten in DienstendpunkteHow to: Import Metadata into Service Endpoints
Beschreibt, wie heruntergeladene Metadaten in Beschreibungsobjekte importiert werden.Describes how to import downloaded metadata into description objects.

Vorgehensweise: Exportieren von Metadaten aus DienstendpunktenHow to: Export Metadata from Service Endpoints
Beschreibt, wie Beschreibungsobjekte in Metadaten importiert werden.Describes how to export description objects into metadata.

ServiceDescription und WSDL-VerweisServiceDescription and WSDL Reference
Beschreibt die Zuordnung zwischen Beschreibungsobjekten und WSDL.Describes the mapping between the description objects and WSDL.

Vorgehensweise: Verwenden von „Svcutil.exe“ zum Exportieren von Metadaten aus kompiliertem DienstcodeHow to: Use Svcutil.exe to Export Metadata from Compiled Service Code
Beschreibt die Verwendung von Svcutil.exe zum Export von Metadaten für Dienste, Verträge und Datentypen in kompilierten Assemblys.Describes the use of Svcutil.exe to export metadata for services, contracts, and data types in compiled assemblies.

Datenvertrags-SchemareferenzData Contract Schema Reference
Beschreibt die von DataContractSerializer zur Beschreibung der Common Language Runtime (CLR)-Typen für die XML-Serialisierung verwendete Teilmenge des XML-Schemas (XSD).Describes the subset of the XML Schema (XSD) used by DataContractSerializer to describe common language run-time (CLR) types for XML serialization.

ReferenzReference

WsdlExporter

WsdlImporter

Siehe auchSee Also

Exportieren von benutzerdefinierten Metadaten für eine WCF-ErweiterungExporting Custom Metadata for a WCF Extension
Importieren von benutzerdefinierten Metadaten für eine WCF-ErweiterungImporting Custom Metadata for a WCF Extension