2010-04-08 4 views
8

DataContractSerializer를 사용하여 XML과의 클래스를 직렬화/비 직렬화합니다. 모든 것이 잘 작동하지만, 어느 시점에서 실제 코드와 독립적으로 XML 파일의 형식에 대한 표준 스키마를 만들고 싶습니다. 그런 식으로 serialization 프로세스가 중단되면 언제든지 돌아가서 표준 스키마가 무엇인지 확인할 수 있습니다. 또는 스키마를 수정해야하는 경우 수정은 내 코드를 수정하는 것보다는 나중에 명시 적으로 결정하는 것입니다.DataContract에서 XSD 스키마를 내보내는 방법이 있습니까?

또한 다른 사람들은 .NET 기반이 아닌 다른 소프트웨어를 작성하여 이러한 XML 파일에서 읽어야 할 수도 있습니다. 스키마의 문서화를 제공 할 수 있기를 바랍니다.

DataContract와 XSD 스키마간에 어떤 관계가 있습니까? 클래스의 DataContract 특성을 XSD 스키마로 내보내는 방법이 있습니까?

답변

4

Svcutil.exe can "export metadata for compiled data contracts".

DataContractSerializer는 메타 데이터를 메타 데이터 엔드 포인트 또는 ServiceModel은 서비스 메타 데이터 유틸리티 도구 (Svcutil.exe를)를 사용하여 WCF (Windows Communication Foundation) 서비스에서 내보낼 때 XSD하는 CLR 유형을 매핑합니다 DataContract and XSD 사이의 관계가
. 자세한 내용은 데이터 계약 직렬화를 참조하십시오.

DataContractSerializer는 Svcutil.exe를 사용하여 WSDL (Web Services Description Language) 또는 XSD 문서에 액세스하고 서비스 또는 클라이언트에 대한 데이터 계약을 생성 할 때도 XSD를 CLR 형식에 매핑합니다.

당신은 setting upMEX endpoint에 의해, 심지어 당신의 브라우저에서뿐만 아니라 런타임에서 XSD (들)을 얻을 수 있습니다.
WSDL에는 기본적으로 끝점을 통해 액세스 할 수있는 XSD에 대한 참조가 포함됩니다.

3

Visual Studio와 함께 제공되는 svcutil.exe 도구를 사용하여 DataContracts에서 스키마 파일을 생성 할 수 있습니다.

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 

나는 과거의 어느 시점에서 이것을 엉망으로 만든 것으로 생각하고 작동하지 않을 수도 있습니다. 스키마를 생성하는 또 다른 쉬운 방법은 데이터 계약을 사용하는 WCF 서비스를 세우고 WSDL에 액세스하는 것입니다. WSDL은 DataContracts의 모든 xsds를 가져옵니다.

관련 문제