2010-04-08 16 views
8

Sto utilizzando DataContractSerializer per serializzare/deserializzare le mie classi in/da XML. Tutto funziona bene, ma a un certo punto mi piacerebbe stabilire uno schema standard per il formato di questi file XML indipendente dal codice reale. In questo modo se qualcosa si rompe nel processo di serializzazione posso sempre tornare indietro e controllare quale dovrebbe essere lo schema standard. O se ho bisogno di modificare lo schema la modifica è una decisione esplicita piuttosto che un successivo effetto sulla modifica del mio codice.Esiste un modo per esportare uno schema XSD da un DataContract

Inoltre, altre persone potrebbero scrivere altri software che potrebbero non essere basati su .NET che dovrebbero leggere da questi file XML. Mi piacerebbe essere in grado di fornire loro una sorta di documentazione dello schema.

C'è qualche relazione tra un DataContract e uno schema XSD. Esiste un modo per esportare gli attributi DataContract nelle classi come uno schema XSD?

risposta

4

Svcutil.exe can "export metadata for compiled data contracts".
C'è relazione tra DataContract and XSD:

Il DataContractSerializer mappe tipi CLR di XSD quando i metadati viene esportato da un servizio di Windows Communication Foundation (WCF) utilizzando un endpoint metadati o il Metadata Utility Strumento ServiceModel (Svcutil.exe). Per ulteriori informazioni, vedere Serializer contratto dati.

DataContractSerializer associa anche i tipi XSD a CLR quando Svcutil.exe viene utilizzato per accedere ai documenti WSDL (Web Services Description Language) o XSD e generare contratti dati per servizi o client.

È possibile ottenere il XSD (s) a run-time e, anche nel tuo browser, per setting up un MEX endpoint.
Il WSDL per impostazione predefinita conterrà i riferimenti a XSD (s) a cui è possibile accedere tramite l'endpoint.

3

Potrebbe essere possibile generare file di schema da DataContracts utilizzando lo strumento svcutil.exe fornito con Visual Studio.

svcutil myAssembly.dll 
    - Generate metadata documents for Service Contracts and associated types in an assembly 

svcutil myServiceHost.exe /serviceName:myServiceName 
    - Generate metadata documents for a service, and all associated Service Contracts and data types in an assembly 

svcutil myServiceHost.exe /dconly 
    - Generate metadata documents for data types in an assembly 

credo Ho sbagliato con questo ad un certo punto, in passato, e può o non può avere ottenuto al lavoro. Un altro modo semplice per generare schemi è quello di mettere in piedi un servizio WCF che utilizza i vostri contratti dati e accedere al WSDL. Il WSDL importerà tutte le xsds per i DataContracts.

Problemi correlati