Early Binding — to metoda, w której typ obiektu jest znany w czasie kompilacji. Wskazujemy konkretny typ przy deklaracji zmiennej:
Dim app As New Excel.Application ' Early Binding
Zalety:
Late Binding — typ obiektu jest określany dopiero w czasie wykonania. Zwykle używa się przez Object:
Dim app As Object Set app = CreateObject("Excel.Application") app.Visible = True
Zalety:
Wady late binding:
Czy zawsze ma sens używać late binding do pracy z obiektami COM?
Odpowiedź: Nie, tylko jeśli nie jesteś pewien, czy potrzebna wersja biblioteki jest obecna na wszystkich docelowych komputerach. Jeśli kontrola wersji jest bezpieczna, a wszystkie zależności są znane — early binding jest szybszy, bardziej niezawodny i preferowany. Bezzasadne stosowanie late binding pogarsza wydajność i pracę z typowaniem statycznym.
Historia
Automatyzacja raportowania przez Excel: z powodu late binding odkryto błąd w nazwie metody tylko u klienta, gdy makro „się zepsuło” (literówka w
app.WorkbooksOpenzamiastapp.Workbooks.Open). Gdyby używano early binding, błąd ujawniłby się od razu.
Historia
Przy migracji ze starej na nową wersję biblioteki Word aplikacja zaczęła wyrzucać wyjątki — nowe pola nie były obsługiwane. Early binding zablokował aktualizację; trzeba było przejść na late binding, ale część funkcji przestała działać z powodu zgodności sygnatur.
Historia
Gotową bibliotekę dostarczono na produkcję, ale zapomniano o potrzebnej zależności COM. Przy early binding projekt nie uruchamiał się w ogóle (błąd rejestracji), a przy late binding — działał, ale „upadał” przy każdym wywołaniu obiektu, żądając dodatkowych logów.