Асинхронное хранилище

Асинхронное хранилище расширяет спецификацию структурированного хранилища COM для поддержки асинхронного скачивания объектов хранилища в сетях с высокой задержкой и медленной компоновкой, таких как Интернет. Асинхронное хранилище позволяет как новым, так и устаревшим приложениям, используюющим составные файлы, эффективно отображать свое содержимое при доступе с помощью существующих протоколов Интернета. Один запрос к серверу World Wide Web активирует скачивание вложенных объектов, содержащихся на веб-странице, избавляя от необходимости отдельно запрашивать каждый объект. Асинхронный механизм загрузки и доступа позволяет приложению отображать первую страницу данных до получения всех данных. Точный порядок, в котором элементы страницы становятся доступными, может быть указан веб-издателем и не зависит от случайных факторов топологии сети и доступности сервера.

Асинхронное хранилище работает вместе с асинхронными моникерами для обеспечения полного поведения асинхронной привязки. Дополнительные сведения об асинхронных моникерах см. в пакете средств разработки программного обеспечения Microsoft ActiveX. Асинхронный моникер, зависящий от протокола, активирует операцию привязки и настраивает необходимые компоненты. В случае с Интернетом этот моникер может анализировать URL-адрес для привязки к объекту или хранилищу. Если целью операции привязки является постоянный объект, вызов IMoniker::BindToStorage возвращает объект асинхронного хранилища.

Примечание

Текущая версия моникеров URL-адресов Майкрософт не поддерживает асинхронное хранилище.

 

Клиент асинхронного моникера запрашивает асинхронную привязку, реализуя объект обратного вызова состояния привязки и регистрируя его в контексте привязки. Объект обратного вызова bind-status предоставляет интерфейс IBindStatusCallback , который позволяет клиенту указать параметры привязки и получать уведомления о ходе выполнения и глобальные уведомления о доступности данных в ходе операции привязки. Асинхронная реализация составного файла предоставляет точку подключения для IProgressNotify, которую клиенты могут использовать для получения определенных уведомлений о доступности в отдельных потоках.