Silverlight/Tips

Data Class에 DataContract 등의 선언없이 WCF 사용하기 in .NET 3.5 SP1

길버트리 2009. 5. 8. 10:12
Aaron Skonnard란 분의 Service Station 블로그에
DataContracts without attributes (POCO support) in .NET 3.5 SP1이란 제목의 포스트가 있습니다.
관련 문제로 고민하던 Boxmile(박스마일) 대표가 찾아낸 포스트인데요. 아주 흥미롭습니다.

가장 중요한 대목은 .NET 3.5 SP1인데요.
서버에 SP1(서비스팩1)이 설치되어 있지 않으면, 제목대로(DataContract 등의 선언없이) 되질 않습니다.

저희가 한참 삽질한 이유이기도 합니다.
개발 환경은 SP1이 설치되어 있고, 실제 서버에는 SP1이 설치되지 않아서,
개발환경(localhost 혹은 local IIS)에서는 Data Class에 어떠한 Serialization 관련 선언이 없이도
잘 작동하는데 서버에만 올리면 에러를 팍팍! 내뱉는 거예요.

해당 포스트의 요점만 정리하면

.NET Framework 3.5 SP1가 깔려있어야,
[DataContract]등 어떠한 직렬화(Serialization) 관련 선언없이도
모든 C# object를 Remoting Type으로 제공할 수 있다.


POCO support란 표현에서의 POCOplain old C# object라네요.

예전에 아래와 같이 쓰셨다면

 [DataContract]

 public class Person

 {
     [DataMember]

     public string Id { get; set; }

   
     [DataMember]

     public string Name { get; set; }

   
     [DataMember]

     public Person Spouse { get; set; }

}

.NET Framework 3.5 SP1 이후부터는 그냥 일반 클래스와 똑같이 쓰시면 된다는 이야깁니다.

 

public class Person

{

    public string Id { get; set; }

    public string Name { get; set; }

    public Person Spouse { get; set; }

}


귀찮은 일이 많이 줄어들었네요.