비동기 복합 파일

비동기 스토리지의 시스템 제공 구현인 비동기 복합 파일은 일반적으로 인터넷과 특히 웹에서 복합 파일을 효율적으로 다운로드할 수 있도록 합니다. 비동기 복합 파일의 기본 아키텍처는 다음 다이어그램에 나와 있습니다.

비동기 복합 파일 기본 아키텍처

비동기 복합 파일 구현은 인터넷 프로토콜을 이해하고 URL로 식별된 개체에 바인딩할 수 있는 새로운 비동기 모니커 형식으로 작동할 수 있습니다. 이러한 모니커는 IMoniker::BindToStorage대한 클라이언트의 호출에서 비동기 IStream 또는 IStorage 포인터를 반환합니다.

일반적으로 복합 파일은 개체의 데이터를 플랫 바이트 배열로 나타내는 파일의 추상화인 바이트 배열 개체 위에 구현됩니다. 바이트 배열 개체는 ILockBytes 인터페이스를 통해 해당 기능을 노출합니다. 바이트 배열이 비동기 스토리지를 차단하지 않는 경우 복합 파일 구현에 E_PENDING 반환하며, 이로 인해 오류가 호출자에게 다시 전파됩니다.

다운로드하는 동안 사용 가능한 데이터를 추적하기 위해 비동기 스토리지를 지원하는 바이트 배열은 특히 이러한 목적을 위해 시스템에서 제공하는 래퍼 개체에 IFillLockBytes 인터페이스를 노출합니다. 비동기 모니커에서 제공하는 다운로드 코드는 데이터를 사용할 수 있으므로 이 인터페이스를 호출하여 바이트 배열을 비동기적으로 채웁니다. 또한 래퍼 개체는 비동기 복합 파일 구현에서 배열에서 데이터를 읽고 쓰는 데 사용하는 ILockBytes 인터페이스를 노출합니다.

비동기 스토리지 및 스트림 개체는 비동기 모니커의 다운로드 코드에 의해 구현되는 IProgressNotify 인터페이스에 대한 연결점을 제공합니다. 비동기 복합 파일 구현은 IProgressNotify 호출하여 다운로드 작업의 상태에 대한 정보를 다운로더에게 제공합니다.