2009-06-15 2 views
3

개체를 직렬화하면 (전선을 통해 원격 처리되도록) 인스턴스 메서드 코드가 직렬화됩니까? 아니면 클래스 수준의 인스턴스 필드가 직렬화 되었습니까?C# serialization의 메서드 코드

내 개체의 일부가 큰 방법을 가지고 있고 wheather를 알고 싶습니다. 전선을 통해 데이터를 전송하기 위해 DTO (데이터 전송 개체)를 사용해야합니다.

데이터 형식에 약간의 데이터가 더해진 것 같습니다 ... 맞습니까?

감사합니다.

+0

(의견에 대한 대답) –

답변

2

방법은 절대로 serialize되지 않습니다.

"필드"- 모든 것은 시리얼 라이저에 달려 있습니다. BinaryFormatter은 필드를 수행합니다. 당신은 BinaryFormatter을 제안한다 "원격"을 언급하지만, 원격 지금은 주로 숙취입니다 - MSDN에서 (원격에) :

이 항목에서는 기존에 이전 버전과의 호환성을 위해 유지되는 기존 기술에 특정한 새로운 개발에 대해서는 을 권장하지 않습니다. 분산 된 응용 프로그램은 Windows 통신 Foundation (WCF)을 사용하여 으로 개발해야합니다.

웹 서비스 또는 WCF를 사용하는 경우 : XmlSerializer 공용 필드 + 속성을 사용합니다. DataContractSerializer은 표시된 필드 등을 수행합니다.

일반 클래스는 종종 DTO로 재사용 할 수 있지만 전선을 통해 많은 제어가 필요하거나 버전 문제가있는 경우 별도의 DTO가 유용 할 수 있습니다.


(편집/추가) 참고 다른 이유가 있다는 것을 BinaryFormatter을 좋아하지 - 그것은 는 버전에 매우 취성 및 해결하기 위해 매우 고통 스러울 수 (달성 있지만). 다른 (더 관용) 시리얼 라이저가 존재할 가능성이있는 경우 존재합니다 ... 그렇다면 알려 주시면 업데이트하겠습니다.

+0

XmlSerializer 및 DataContractSerializer에서 순환 참조를 serialize 할 수 없다는 점만 언급하면됩니다. NetDataContractSerializer는 다음을 수행 할 수 있습니다. http://coding-time.blogspot.com/2008/03/serialize-object-graph-to-xml-in-net.html –

+0

@Martin : 실제로 DataContractSerializer도 가능합니다. 활성화 만하면됩니다 ('preserveObjectReferences' ctor 인수). –

+0

remoting은 레거시 기술이 아니며 WCF에서는 사용할 수없는 몇 가지 사용 시나리오가 있습니다. – SuperSuperDev1234

0

저장되는 것은 클래스 및 속성 이름에 해당하는 데이터 더하기 태그입니다. 코드 자체가 직렬화되지 않습니다.