방법: Serialize된 데이터 청크

대용량 데이터 집합을 웹 서비스 메시지에서 전송할 때 발생하는 두 가지 문제는 다음과 같습니다.

  1. serialization 엔진의 버퍼링으로 인한 대용량 작업 집합(메모리)

  2. Base64 인코딩 후 33퍼센트 확장으로 인한 과도한 대역폭 소비

이러한 문제를 해결하려면 IXmlSerializable 인터페이스를 구현하여 serialization과 deserialization을 제어합니다. 특히 WriteXmlReadXml 메서드를 구현하여 데이터를 청크합니다.

서버측 청크를 구현하려면

  1. 서버 시스템에서 웹 메서드는 ASP.NET 버퍼링을 끄고 IXmlSerializable을 구현하는 형식을 반환해야 합니다.

  2. IXmlSerializable을 구현하는 형식이 WriteXml 메서드의 데이터를 청크합니다.

클라이언트측 처리를 구현하려면

  1. 클라이언트 프록시에서 웹 메서드를 변경하여 IXmlSerializable을 구현하는 형식을 반환합니다. SchemaImporterExtension을 사용하여 이 작업을 자동으로 수행할 수 있지만 여기에서는 다루지 않습니다.

  2. ReadXml 메서드를 구현하여 청크된 데이터 스트림을 읽고 바이트를 디스크에 씁니다. 또한 이 구현은 진행률 표시줄 등과 같은 그래픽 컨트롤에서 사용할 수 있는 진행률 이벤트도 발생시킵니다.

예제

다음 코드 예제에서는 ASP.NET 버퍼링을 끄는 클라이언트의 웹 메서드를 보여 줍니다. 또한 WriteXml 메서드의 데이터를 청크하는 IXmlSerializable 인터페이스의 클라이언트측 구현도 보여 줍니다.

코드 컴파일

참고 항목

개념

사용자 지정 Serialization

Footer image

Copyright © 2007 by Microsoft Corporation. All rights reserved.