2011-10-25 2 views
7

우리는 데이터베이스에 일련 번호를 유지하려는 개체가있는 응용 프로그램을 보유하고 있습니다.
현재 NetDataContractSerializer을 사용하고 있지만 최근에 .Net 유형 정보가 포함되어있어 기본 객체의 경우에도 느린 응용 프로그램을 의미하는 거대한 파일을 생성한다는 사실이 최근 알게되었습니다.
우리는 대신 DataContractSerializer으로 전환하는 것을 고려하고 있습니다. 나는 두 가지를 비교해 보았으나 하나를 찾지 못했습니다.NetDataContractSerializer와 DataContractSerializer

  • 두 개체가 만든 개체의 크기는 어떻게 다릅니 까?
  • 큰 성능 차이가 있습니까?
  • X이 복수의 다른 개체에 의해 상속되는 List<X>을 포함하는 개체가있을 때 문제가 발생하여 런타임에 목록에 여러 가지 유형이 포함될 수 있습니까? (나는 DataContractSerializerKnownTypes 속성을 부여 할 수 있습니다 들었다,하지만이 코드에서 더 많은 의존성을 의미한다. DataContractSerializer 내 솔루션의 모든 유형을 알 수 있도록하는 방법이 있나요?)

감사합니다. DataContractSerializer (DCS)이 만해야하는 사람들을 기록하면서

답변

9
  1. NetDataContractSerializer (NetDCS는) 모든 개체의 형식 정보를 기록합니다 (로 즉, 당신은 B 형으로 회원 및 회원이 때의 실제 값을 선언하는 경우 직렬화되는 형식은 D 형식이며 D는 B에서 파생 된 형식이므로 DCS 직렬화 형식에는 훨씬 적은 "잡음"이 있습니다.
  2. 실제로이 두 가지 방법을 시도해보십시오 영향을받을 것입니다
  3. DCS에서 알려진 유형을 사용해야하지만 알려진 유형으로 작업하고 싶지 않은 경우 DataContractResolver을 사용할 수 있습니다. 이러한 확인 자의 예는 Youssef Massaoui's blog, 리졸버 자체에 대한 자세한 내용은 WCF 확장성에 관한 내 게시물 http://blogs.msdn.com/b/carlosfigueira/archive/2011/09/21/wcf-extensibility-data-contract-resolver.aspx에서 확인할 수 있습니다.