Serialization

Serialization은 C 데이터 구조체(구조체, 배열 및 기본 값)의 값을 XML 요소로 작성하는 프로세스입니다. 역직렬화는 역방향 프로세스입니다.

Serialization은 C 데이터 구조체(구조체, 배열 및 기본값)의 값을 XML 요소로 작성하는 프로세스입니다. 역직렬화는 역방향 프로세스입니다.

두 프로세스 모두 C 데이터 구조와 XML 간의 매핑에 대한 설명을 사용합니다.

직렬화 및 역직렬화가 C 데이터 구조와 XML 간의 매핑에 대한 설명을 사용하는 방법을 보여 주는 다이어그램

값을 직렬화하기 위해 애플리케이션은 WsWriteElement, WsWriteAttribute 또는 WsWriteType을 호출합니다.

값을 역직렬화하기 위해 애플리케이션은 WsReadElement, WsReadAttribute 또는 WsReadType을 호출합니다.

보안

XML 판독 기는 역직렬화 프로세스에 사용됩니다. XML 관련 보안 정보는 XML 판독기에서 보안 섹션을 참조하세요.

역직렬 변환기는 역직렬화되는 요소 읽기를 완료할 때까지 데이터를 계속 역직렬화합니다. 역직렬화 프로세스는 역직렬화되는 데이터에 대한 설명을 따르지 않는 XML 문서가 발견되면 실패합니다. 이때 사용 중인 XML 판독기가 잘못되고 오류가 반환됩니다.

기본적으로 역직렬화는 엄격합니다. 역직렬화가 실패하는 일부 조건에는 다음이 포함되지만 제한되지는 않습니다.

  • 필요한 요소가 없습니다.
  • 필수 요소 사이에 예기치 않은 요소 필드가 나타납니다.
  • 필수 필드 뒤의 추가 요소 콘텐츠( WS_STRUCT_IGNORE_TRAILING_ELEMENT_CONTENT
  • WS_STRUCT_IGNORE_UNHANDLED_ATTRIBUTES 플래그를 지정하지 않는 한 예기치 않은 특성
  • 지정된 범위를 벗어난 예기치 않은 데이터 형식 값
  • 반복 요소 수가 지정된 범위를 벗어났습니다.

대량의 데이터를 직렬화하면 과도한 메모리 할당이 발생할 수 있으며 서비스 거부 공격이 발생할 수 있습니다. 데이터를 역직렬화하는 사용자는 데이터를 할당할 Heap 개체를 지정해야 하며, 사용자는 힙 할당 제한을 사용하여 메모리 할당 공격을 방지할 수 있습니다.

문자열의 최대 길이, 배열의 최대 요소 수 등을 포함하여 데이터 형식에 대한 범위 지원 를 사용하면 사용자가 다양한 데이터 형식의 최대 크기를 제어할 수 있습니다. 사용자는 데이터 설명 또는 스키마에서 범위를 지정하여 다른 데이터의 최대 크기를 제한할 수 있습니다.

포함된 0을 포함하는 문자열 값은 와이어 형식(text, binary, MTOM)에서 지원됩니다. 포함된 0으로 문자열을 역직렬화할 때 사용자는 계산된 문자열(WS_STRING)을 사용해야 하므로 0은 문자열 길이 계산을 혼동하지 않습니다. 포함된 0이 포함된 문자열 값이 0으로 끝나는 문자열이 필요한 필드로 역직렬화되면 오류가 반환되고 역직렬화가 실패합니다. wsutil을 사용하여 데이터 설명을 생성하는 경우 포함된 0이 있는 문자열이 필요한 경우 /string:WS_STRING 옵션을 사용해야 합니다.

다음 콜백은 serialization과 함께 사용됩니다.

serialization과 함께 사용되는 열거형은 다음과 같습니다.

serialization과 함께 사용되는 함수는 다음과 같습니다.

serialization과 함께 사용되는 구조는 다음과 같습니다.