방법: Serialize된 데이터 청크
대용량 데이터 집합을 웹 서비스 메시지에서 전송할 때 발생하는 두 가지 문제는 다음과 같습니다.
serialization 엔진의 버퍼링으로 인한 대용량 작업 집합(메모리)
Base64 인코딩 후 33퍼센트 확장으로 인한 과도한 대역폭 소비
이러한 문제를 해결하려면 IXmlSerializable 인터페이스를 구현하여 serialization과 deserialization을 제어합니다. 특히 WriteXml 및 ReadXml 메서드를 구현하여 데이터를 청크합니다.
서버측 청크를 구현하려면
서버 시스템에서 웹 메서드는 ASP.NET 버퍼링을 끄고 IXmlSerializable을 구현하는 형식을 반환해야 합니다.
IXmlSerializable을 구현하는 형식이 WriteXml 메서드의 데이터를 청크합니다.
클라이언트측 처리를 구현하려면
클라이언트 프록시에서 웹 메서드를 변경하여 IXmlSerializable을 구현하는 형식을 반환합니다. SchemaImporterExtension을 사용하여 이 작업을 자동으로 수행할 수 있지만 여기에서는 다루지 않습니다.
ReadXml 메서드를 구현하여 청크된 데이터 스트림을 읽고 바이트를 디스크에 씁니다. 또한 이 구현은 진행률 표시줄 등과 같은 그래픽 컨트롤에서 사용할 수 있는 진행률 이벤트도 발생시킵니다.
예제
다음 코드 예제에서는 ASP.NET 버퍼링을 끄는 클라이언트의 웹 메서드를 보여 줍니다. 또한 WriteXml 메서드의 데이터를 청크하는 IXmlSerializable 인터페이스의 클라이언트측 구현도 보여 줍니다.
코드 컴파일
- 코드에서는 System, System.Runtime.Serialization, System.Web.Services, System.Web.Services.Protocols, System.Xml, System.Xml.Serialization 및 System.Xml.Schema 네임스페이스를 사용합니다.
참고 항목
개념
Copyright © 2007 by Microsoft Corporation. All rights reserved.