2010-12-16 3 views
1

[DataContract] 특성을 가진 클래스가 자동으로 직렬화되지 않습니까? 그렇지 않으면 [Serializable] 특성을 사용하거나 ISerialize에서 상속하는 것이 필요합니까?WCF DataContract에는 직렬화가 필요합니까?

이전 프로젝트의 이전 코드가 있으므로 [DataContract] 클래스가 직렬화에 대해 명시 적으로 언급하지 않았기 때문에이 질문을드립니다.

궁극적 인 질문 : WCF 작업 (메서드)에서 DataContract 클래스를 반환하려고합니다. 메서드는 클래스를 반환하기 전에 명시 적으로 클래스를 serialize해야합니까, 아니면 자동으로 serialize됩니까? 나는 항상 그것이 후자라고 생각했다.

감사합니다.

답변

4

아니요, [Serializable]은 데이터 계약에서 필요하지 않습니다. 또한 XML 직렬화에 필요하지 않습니다.

+0

그래서 WCF 메서드 내에서 반환 할 때 xml에서 수동으로 serialize하지 않고 DataContract 형식의 개체를 반환 할 수 있습니까? ... 즉, 단순히 DataContract 개체를 반환 할 수 있으며 xml serialize 된 것입니다, 그렇습니까? – AlvinfromDiaspar

+0

@Alvin : 맞습니다. Visual Studio에서 새로운 WCF 서비스를 만들고 작성한 코드를 살펴 보는 것이 좋습니다. 그것은 정확히 이것을합니다. –

1

.NET의 직렬화에는 몇 가지 옵션이 있습니다. SerializableAttribute 및 ISerializable은 처음으로 돌아가서 BinaryFormatter, SoapFormatter 등에서 사용됩니다.

비교적 새로운 DataContractSerializer는 SerializableAttribute를 사용하여 직렬화 기능을 정의하는 객체를 지원할 수 있지만 필요하지는 않습니다. DataContractSerializer를 사용하여 객체를 직렬화하는 경우 데이터 계약 속성 만 사용하면됩니다.

분명히 serializable로 표시 한 멤버는 serialize 가능한 유형이어야합니다.

자세한 내용은 MSDN의 Types Supported by the Data Contract Serializer을 참조하십시오.

+0

그래서 DataContract 특성은 DataContractSerializer를 처음 사용하는 것으로 나타납니다. – AlvinfromDiaspar

+0

@Alvin : 아니요, 데이터 계약 serializer가 기본값입니다. –

0

DataContractSerializer는 DataContract 유형 이외의 다른 유형도 지원합니다. DataContractSerializer에서 지원하는 모든 유형의 유니버스에 대한 자세한 내용은 다음 블로그 게시물을 참조하십시오. http://blogs.msdn.com/b/sowmy/archive/2006/02/22/536747.aspx

관련 문제