2010-04-08 8 views
8

Estoy usando DataContractSerializer para serializar/deserializar mis clases a/desde XML. Todo funciona bien, pero en algún momento me gustaría establecer un esquema estándar para el formato de estos archivos XML, independientemente del código real. De esa forma, si algo se rompe en el proceso de serialización, siempre puedo regresar y verificar cuál debería ser el esquema estándar. O si necesito modificar el esquema, la modificación es una decisión explícita en lugar de simplemente un efecto posterior de modificar mi código.¿Hay alguna forma de exportar un esquema XSD desde un DataContract?

Además, otras personas pueden estar escribiendo otro software que puede no estar basado en .NET que necesite leer de estos archivos XML. Me gustaría poder proporcionarles algún tipo de documentación del esquema.

Existe alguna relación entre un DataContract y un esquema XSD. ¿Hay alguna manera de exportar los atributos de DataContract en clases como un esquema XSD?

Respuesta

4

Svcutil.exe can "export metadata for compiled data contracts".
Hay relación entre DataContract and XSD:

mapea los tipos CLR DataContractSerializer a XSD cuando se exporta metadatos de un servicio de Windows Communication Foundation (WCF), utilizando un criterio de valoración de metadatos o la herramienta de utilidad de metadatos ServiceModel (Svcutil.exe). Para obtener más información, vea Data Contract Serializer.

DataContractSerializer también asigna XSD a tipos CLR cuando Svcutil.exe se usa para acceder a Lenguaje de descripción de servicios web (WSDL) o documentos XSD y generar contratos de datos para servicios o clientes.

Usted puede obtener el XSD (s) en tiempo de ejecución, así, incluso en su navegador, por setting up un MEX endpoint.
El WSDL de forma predeterminada contendrá referencias a XSD (s) a los que se puede acceder también a través del punto final.

3

Es posible que pueda generar archivos de esquema desde DataContracts utilizando la herramienta svcutil.exe que viene 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 

creo que metí la pata con este en un momento en el pasado, y puede o no puede haber conseguido que funcione. Otra manera fácil de generar esquemas es poner de pie un servicio WCF que utiliza sus contratos de datos y acceder al WSDL. El WSDL importará todos los xsds para los DataContracts.

Cuestiones relacionadas