Share via


Import und Export von Schemas

Windows Communication Foundation (WCF) umfasst ein neues Serialisierungsmodul, DataContractSerializer. DataContractSerializer übersetzt zwischen .NET Framework-Objekten und XML (in beide Richtungen). Zusätzlich zum Serialisierungsprogramm umfasst WCF zugeordnete Mechanismen zum Schemaimport und -export. Schema ist eine formale, genaue und maschinenlesbare Beschreibung der XML-Form, die das Serialisierungsprogramm erstellt oder auf die das Programm zugreifen kann. WCF verwendet die vom World Wide Web Consortium (W3C) definierte Sprache XML Schema Definition (XSD) als Schemadarstellung. Diese Sprache ist mit zahlreichen Plattformen von Drittanbietern weitgehend interoperierbar.

Die Schemaimportkomponente XsdDataContractImporter generiert anhand eines XSD-Schemadokuments .NET Framework-Klassen (normalerweise Datenvertragsklassen), sodass die serialisierten Formen dem angegebenen Schema entsprechen.

Das folgende Schemafragment:

generiert beispielsweise den folgenden Typ (zugunsten einer besseren Lesbarkeit leicht vereinfacht).

Beachten Sie, dass der generierte Typ mehreren empfohlenen Vorgehensweisen für Datenverträge (siehe Empfohlene Vorgehensweisen: Versionsverwaltung von Datenverträgen) folgt:

  • Der Typ implementiert die IExtensibleDataObject-Schnittstelle. Weitere Informationen finden Sie unter Aufwärtskompatible Datenverträge.
  • Datenmember werden als öffentliche Eigenschaften implementiert, die private Felder umschließen.
  • Die Klasse ist eine partielle Klasse, und Hinzufügungen können vorgenommen werden, ohne generierten Code zu ändern.

Mit XsdDataContractExporter können Sie umgekehrt verfahren und anhand von Typen, die mit DataContractSerializer serialisierbar sind, ein XSD-Schemadokument generieren.

Keine Garantie für die Originaltreue

Bei einem Roundtrip wird keine Garantie für die Originaltreue von Schemas oder Typen übernommen. (Mit Roundtrip wird der Import eines Schemas zum Erstellen einer Gruppe von Klassen und der Export des Ergebnisses zum Erstellen eines Schemas bezeichnet.) Das gleiche Schema wird möglicherweise nicht zurückgegeben. Auch bei der Umkehrung des Prozesses ist eine Beibehaltung der Originaltreue nicht garantiert. (Exportieren Sie einen Typ, um sein Schema zu generieren, und importieren Sie den Typ dann wieder zurück. Es ist unwahrscheinlich, dass der gleiche Typ zurückgegeben wird.)

Unterstützte Typen

Das Datenvertragsmodell unterstützt nur eine beschränkte Teilmenge des WC3-Schemas. Jedes Schema, das dieser Teilmenge nicht entspricht, verursacht während des Importprozesses eine Ausnahme. Es gibt beispielsweise keine Möglichkeit festzulegen, dass ein Datenmember eines Datenvertrags als XML-Attribut serialisiert werden soll. Schemas, die XML-Attribute erfordern, werden daher nicht unterstützt und verursachen beim Import Ausnahmen, da es nicht möglich ist, einen Datenvertrag mit der richtigen XML-Projektion zu generieren.

Das folgende Schemafragment kann z. B. nicht mit den Standardimporteinstellungen importiert werden.

Weitere Informationen finden Sie unter Datenvertrags-Schemareferenz. Wenn ein Schema den Datenvertragsregeln nicht entspricht, verwenden Sie ein anderes Serialisierungsmodul. XmlSerializer verwendet z. B. einen eigenen separaten Schemaimportmechanismus. Außerdem gibt es einen speziellen Importmodus, bei dem der Bereich der unterstützten Schemas erweitert wird. Weitere Informationen finden Sie unter dem Abschnitt zum Generieren von IXmlSerializable-Typen in Importieren von Schemas zum Generieren von Klassen.

XsdDataContractExporter unterstützt alle .NET Framework-Typen, die mit DataContractSerializer serialisiert werden können. Weitere Informationen finden Sie unter Vom Datenvertragsserialisierer unterstützte Typen. Beachten Sie, dass mit XsdDataContractExporter generierte Schemas normalerweise gültige Daten sind, die von XsdDataContractImporter verwendet werden können (sofern XmlSchemaProviderAttribute nicht zur Anpassung des Schemas verwendet wird).

Weitere Informationen zur Verwendung von XsdDataContractImporter finden Sie unter Importieren von Schemas zum Generieren von Klassen.

Weitere Informationen zur Verwendung von XsdDataContractExporter finden Sie unter Exportieren von Schemas aus Klassen.

Siehe auch

Referenz

DataContractSerializer
XsdDataContractImporter
XsdDataContractExporter

Konzepte

Importieren von Schemas zum Generieren von Klassen
Exportieren von Schemas aus Klassen