Early Binding — это способ, при котором тип объекта известен во время компиляции. Мы указываем конкретный тип при объявлении переменной:
Dim app As New Excel.Application ' Early Binding
Преимущества:
Late Binding — тип объекта определяется только во время выполнения. Обычно используется через Object:
Dim app As Object Set app = CreateObject("Excel.Application") app.Visible = True
Преимущества:
Недостатки late binding:
Всегда ли имеет смысл использовать late binding для работы с COM-объектами?
Ответ: Нет, только если вы не уверены в наличии нужной версии библиотеки на всех целевых компьютерах. Если контроль версий безопасен и все зависимости известны — early binding быстрее, надежнее и предпочтительнее. Неоправданное применение late binding ухудшает производительность и работу со статической типизацией.
История
Автоматизация отчётности через Excel: из-за late binding обнаружили ошибку в имени метода только у клиента, когда макрос "сломался" (опечатка в
app.WorkbooksOpenвместоapp.Workbooks.Open). Если бы использовали early binding, ошибка бы проявилась сразу.
История
При миграции со старой на новую версию библиотеки Word приложение начало выбрасывать исключения — новые поля не поддерживались. Early binding блокировал обновление; пришлось переходить на late binding, но часть функций перестала работать из-за соотвествия сигнатур.
История
Готовую библиотеку доставили на продакшен, но забыли про нужную COM-зависимость. При early binding проект не запускался вообще (ошибка регистрации), а при late binding — работал, но "падал" на каждом вызове объекта, требуя дополнительные логи.