COM серверы Visual FoxPro поддерживают оба интерфейса - раннего (vtable) связывания и существующий позднего связывания (IDispatch) (вместе известных под термином dual-interface). Связывание описывает - как клиент получает доступ к свойствам и методам сервера. Ранее связывание предоставляет преимущества производительности для контроллеров автоматизации, которые поддерживают раннее связывание, таких как Visual Basic и Microsoft Transaction Server. Поскольку серверы Visual FoxPro поддерживают оба интерфейса, то какой из них использовать - определяется клиентом.

Expand imageРанее связывание

Если ваш клиент может определить в период компиляции, какие свойства или методы принадлежат объекту, то он может разрешить (resolve) ссылку на объект в период компиляции. Скомпилированный исполнимый файл содержит только код для вызова свойств, методов и событий объекта. Это называется ранним связыванием.

Пример: клиент Visual FoxPro

  CopyCode imageСкопировать код
LOCAL xlApp1 As Excel.Application
xlApp1 = CreateObjectEx("Excel.Application","","")

Пример: клиент Visual Basic

  CopyCode imageСкопировать код
Dim xlApp1 As Excel.Application
Set xlApp1 = New Excel.Application

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

Expand image Позднее связывание

Хотя поздее связывание представляет собой самый медленный путь вызова свойств и методов объекта, бывают моменты, когда это необходимо. Например, в Visual Basic вы можете написать функцию, которая использует переменную объекта, для воздействия на любой из нескольких отдельных классов объектов. Так как вы не знаете заранее, какой класс объекта присвоен переменной, вы должны декларировать ее, как переменную позднего связывания с помощью  команды Visual Basic  - DIM As Object. В Visual FoxPro, вы можете использовать функцию CREATEOBJECT() в предпочтение функции CREATEOBJECTEX() function.

Пример: клиент Visual FoxPro

  CopyCode imageСкопировать код
LOCAL xlApp2 As Excel.Application
xlApp2 = CreateObject("Excel.Application")

Пример: клиент Visual Basic

  CopyCode imageСкопировать код
Dim xlApp2 As Object
Set xlApp2 = CreateObject("Excel.Application")

Вызовы метода объектов, созданных этим путем могут исполняться медленнее, чем вызовы методов объектов, созданных с ранним связыванием, поскольку клиент должен включать в себя код в скопилированном исполнимом файле, который будет определять в run time будет или нет иметься у сервера конкретный метод.

Expand imageСмотрите также