Importazione ed esportazione dello schema

In Windows Communication Foundation (WCF) è disponibile un nuovo motore di serializzazione, ovvero DataContractSerializer. DataContractSerializer esegue la conversione tra oggetti .NET Framework e XML in entrambe direzioni. Oltre al serializzatore, in WCF sono inoltre inclusi meccanismi di importazione ed esportazione degli schemi associati. Uno schema è una descrizione formale, precisa e leggibile dal computer della forma dell'XML prodotto dal serializzatore o a cui il deserializzatore può accedere. Come rappresentazione dello schema, WCF utilizza il linguaggio XSD (XML Schema Definition Language) W3C (World Wide Web Consortium), che è ampiamente interoperabile con numerose piattaforme di terze parti.

Il componente per l'importazione dello schema, XsdDataContractImporter, considera un documento dello schema XSD e genera classi .NET Framework (generalmente classi del contratto dati) in modo che i formati serializzati corrispondano al determinato schema.

Si consideri ad esempio il frammento di schema seguente:

genera il tipo seguente (leggermente semplificato per una migliore leggibilità)

Si noti che il tipo generato segue varie procedure consigliate per i contratti dati (disponibili in Procedure consigliate: controllo delle versioni del contratto dati):

La classe XsdDataContractExporter consente di eseguire l'inverso, ovvero considera i tipi serializzabili con DataContractSerializer e genera un documento dello schema XSD.

Fedeltà non garantita

Non è garantito che lo schema o i tipi eseguano un round trip con fedeltà assoluta (per round trip si intende l'importazione di uno schema per creare un insieme di classi e l'esportazione del risultato per creare nuovamente uno schema). È possibile che non venga restituito lo stesso schema. Anche per l'inversione del processo non è garantito il mantenimento della fedeltà (quando si esporta un tipo per generare lo schema e quindi si importa di nuovo il tipo, è improbabile che venga restituito lo stesso tipo).

Tipi supportati

Il modello del contratto dati supporta solo un sottoinsieme limitato dello schema WC3. Qualsiasi schema che non è conforme a tale sottoinsieme genererà un'eccezione durante il processo di importazione. Ad esempio, non esiste alcun sistema per specificare che un membro dati di un contratto dati debba essere serializzato come attributo XML. Di conseguenza, gli schemi che richiedono l'utilizzo di attributi XML non sono supportati e verranno generate eccezioni durante l'importazione, poiché è impossibile generare un contratto dati con la proiezione XML corretta.

Ad esempio, non è possibile importare il frammento di schema seguente utilizzando le impostazioni di importazione predefinite.

Per ulteriori informazioni, vedere Riferimento allo schema del contratto dati. Se un schema non è conforme alle regole del contratto dati, utilizzare un motore di serializzazione diverso. Ad esempio, la classe XmlSerializer utilizza un proprio meccanismo separato di importazione dello schema. È inoltre disponibile una modalità di importazione speciale in cui l'intervallo dello schema supportato viene espanso. Per ulteriori informazioni, vedere la sezione relativa alla generazione dei tipi IXmlSerializable in Importazione dello schema per generare classi.

La classe XsdDataContractExporter supporta tutti i tipi .NET Framework che possono essere serializzati con DataContractSerializer. Per ulteriori informazioni, vedere Tipi supportati dal serializzatore dei contratti dati. Si noti che lo schema generato utilizzando XsdDataContractExporter consiste solitamente di dati validi che possono essere utilizzati da XsdDataContractImporter, a meno che non si utilizzi la classe XmlSchemaProviderAttribute per personalizzare lo schema.

Per ulteriori informazioni sull'utilizzo della classe XsdDataContractImporter, vedere Importazione dello schema per generare classi.

Per ulteriori informazioni sull'utilizzo della classe XsdDataContractExporter, vedere Esportazione di schemi dalle classi.

Vedere anche

Riferimenti

DataContractSerializer
XsdDataContractImporter
XsdDataContractExporter

Concetti

Importazione dello schema per generare classi
Esportazione di schemi dalle classi