Поделиться через


Обработчик OLE

Обработчик OLE — это библиотека DLL, содержащая несколько взаимодействующих компонентов, используемых для связывания и внедрения. Чтобы избежать расходов на постоянное взаимодействие между контейнером и сервером, обработчик загружается в пространство обработки контейнера, чтобы действовать от имени сервера в качестве суррогатного процесса. Обработчик OLE управляет запросами контейнеров, которые не требуют внимания серверного приложения, например запросов на рисование. Если контейнер запрашивает что-то, что обработчик объектов не может предоставить, обработчик взаимодействует с серверным приложением с помощью механизма связи вне процесса COM.

К компонентам обработчика OLE относятся элементы удаленного взаимодействия для управления взаимодействием между обработчиком и сервером, кэш для хранения данных объекта (а также сведения о том, как эти данные должны быть отформатированы и отображаться), а также контролируемый объект, который координирует действия других компонентов библиотеки DLL. Кроме того, если объект является ссылкой, библиотека DLL также включает компонент связывания или связанный объект, который отслеживает имя и расположение источника ссылки.

OLE предоставляет обработчик по умолчанию, используемый большинством приложений для связывания и внедрения. Если значение по умолчанию не соответствует требованиям сервера, можно либо полностью заменить обработчик по умолчанию, либо использовать части функциональных возможностей, которые предоставляются соответствующим образом. В последнем случае обработчик приложения реализуется как агрегатный объект, состоящий из нового объекта элемента управления и обработчика по умолчанию. Обработчики сочетания приложений и по умолчанию также называются обработчиками в процессе. Обработчик удаленного взаимодействия используется для объектов, которые не назначены CLSID в системном реестре или не имеют указанного обработчика. Все, что требуется от обработчика для этих типов объектов, заключается в том, что они передают информацию через границу процесса. Чтобы создать новый экземпляр обработчика по умолчанию, вызовите OleCreateDefaultHandler. Для некоторых особых обстоятельств вызовите OleCreateEmbeddingHelper.

При создании экземпляра обработчика для одного класса его нельзя использовать для другого. При использовании для составного документа обработчик OLE реализует структуры данных на стороне контейнера при удаленном доступе к объектам определенного класса.

OLE определил обработчик по умолчанию для клиентов составных серверов документов. Обработчик по умолчанию реализовал ряд интерфейсов, которые не сделали типичный сервер. Когда OLE впоследствии разрешил серверы обработки для составных документов, они должны были создать вспомогательный компонент внедрения, который реализовал эти дополнительные интерфейсы, чтобы клиенты могли легко работать с ними.

Разработчики платформ, определяющие и реализующие обработчик на стороне клиента, должны учитывать эту проблему в своей разработке и предоставлять эквивалентную в процессе вспомогательное средство по тем же причинам. Даже если конструкторы в настоящее время не реализуют интерфейсы на обработчике, которые серверы не предоставляют, они могут потребовать определить вспомогательный элемент теперь, чтобы они могли добавить их в будущем. Кроме того, можно реализовать дополнительные интерфейсы на самом объекте сервера.

Упрощенный обработчик на стороне клиента