다음을 통해 공유


데이터 계약 직렬 변환기에서 지원되는 형식

WCF(Windows Communication Foundation)는 기본 serialization 엔진으로 사용하여 DataContractSerializer 데이터를 XML로 변환하고 XML을 다시 데이터로 변환합니다. DataContractSerializer는 데이터 계약 형식을 직렬화하도록 설계되었습니다. 그러나 암시적 데이터 계약을 갖는 것으로 생각할 수 있는 다른 많은 형식을 지원합니다. 다음은 serialize할 수 있는 형식의 전체 목록입니다.

부분 신뢰 모드에서 특정 형식 사용의 제한 사항

다음은 부분 신뢰 모드 시나리오에서 특정 형식을 사용하는 경우의 제한 사항 목록입니다.

  • ISerializableDataContractSerializer 권한이 필요하며, SerializationFormatter을 사용하여 부분적으로 신뢰할 수 있는 코드에서 UnmanagedCode을 구현하는 형식을 직렬화하거나 역직렬화해야 합니다.

  • 부분 신뢰 모드에서 WCF 코드를 실행하는 경우 필드의 readonly 직렬화 및 역직렬화(둘 다 publicprivate)는 지원되지 않습니다. 이는 생성된 IL을 검증할 수 없으므로 상승된 권한이 필요하기 때문입니다.

  • DataContractSerializer XmlSerializer 부분 신뢰 환경에서 둘 다 지원됩니다. 그러나 DataContractSerializer 사용은 다음과 같은 조건이 적용됩니다.

    • 직렬화 가능한 [DataContract] 모든 형식은 public이어야 합니다.

    • 모든 직렬화 가능한 [DataMember] 필드 또는 속성은 [DataContract] 형식 내에서 공개적이며 읽기/쓰기가 가능해야 합니다. 부분적으로 신뢰할 수 있는 애플리케이션에서 WCF를 실행할 때는 필드의 readonly 직렬화 및 역직렬화가 지원되지 않습니다.

    • [Serializable] / ISerializable] 프로그래밍 모델은 부분 신뢰 환경에서 지원되지 않습니다.

    • 알려진 형식은 코드 또는 컴퓨터 수준 구성(Machine.config)에서 지정해야 합니다. 알려진 형식은 보안상의 이유로 애플리케이션 수준 구성에서 지정할 수 없습니다.

  • IObjectReference을(를) 구현하는 형식은 메서드 GetRealObject가 보안 권한 [SecurityPermission(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.SerializationFormatter)]을(를) 필요로 하기 때문에 부분적으로 신뢰할 수 있는 환경에서 예외를 던집니다.

Serialization에 대한 추가 정보

다음 규칙은 데이터 계약 직렬 변환기에서 지원하는 형식에도 적용됩니다.

  • 제네릭 형식은 데이터 계약 직렬 변환기에서 완전히 지원됩니다.

  • Nullable 값 형식은 데이터 계약 직렬 변환기에서 완전히 지원됩니다.

  • 인터페이스 형식은 Object 로 처리되거나, 컬렉션 인터페이스의 경우에는 컬렉션 형식으로 처리됩니다.

  • 구조체와 클래스가 모두 지원됩니다.

  • DataContractSerializerXmlSerializer 및 ASP.NET 웹 서비스에서 사용하는 프로그래밍 모델을 지원하지 않습니다. 특히 다음과 같은 XmlElementAttributeXmlAttributeAttribute특성은 지원하지 않습니다. 이 프로그래밍 모델을 지원하려면 WCF를 XmlSerializer 대신 DataContractSerializer를 사용하도록 전환해야 합니다.

  • 형식은 DBNull 특별한 방식으로 처리됩니다. 싱글톤 타입이며, 역직렬화 시 디시리얼라이저는 싱글톤 제약 조건을 준수하고 모든 DBNull 참조를 싱글톤 인스턴스를 가리킵니다. DBNull 직렬화 가능한 형식이므로 사용 권한이 필요합니다SerializationFormatter.

참고하십시오