Позднее и раннее связывание
Объекты автоматизации могут работать двумя способами, которые называются позднее связывание (late binding) и раннее связывание (early binding).
При позднем связывании необходимый метод сервера автоматизации вызывается клиентом внутри метода invoke интерфейса IDispatch. При использовании позднего связывания вызов метода не разрешен до момента его исполнения, а возможен только с помощью метода invoke. Во время компиляции вызов метода сервера автоматизации автоматически преобразуется в вызов метода IDispatch, invoke. Во время выполнения приложения метод invoke вызывает нужный метод сервера автоматизации.
Раннее связывание означает, что сервер автоматизации предоставляет свои методы при помощи пользовательского интерфейса, который является наследником интерфейса IDispatch. В данном случае диспетчер автоматизации может обращаться к методам сервера автоматизации напрямую, без вызова метода invoke интерфейса IDispatch. Использование раннего связывания позволяет ускорить работу объектов автоматизации.
Многие объекты автоматизации поддерживают так называемый двойной интерфейс (dual interface). Это означает, что такие объекты автоматизации позволяют вызывать методы как из метода invoke, так и из потомков интерфейса IDispatch. Серверы автоматизации, которые создаются при помощи Delphi, всегда поддерживают двойной интерфейс. Диспетчеры автоматизации, созданные при помощи Delphi, позволяют вызывать методы напрямую внутри интерфейса либо внутри метода invoke.
Содержание раздела