Automatyzacja OLE

W programowaniu aplikacji Microsoft Windows , OLE Automation (później przemianowany na po prostu Automation ) to mechanizm komunikacji między procesami stworzony przez Microsoft . Opiera się na podzbiorze Component Object Model (COM), który był przeznaczony do użytku przez języki skryptowe – pierwotnie Visual Basic – ale teraz jest używany przez kilka języków w systemie Windows. Wszystkie obiekty automatyzacji są wymagane do implementacji IDispatch . Zapewnia infrastrukturę, dzięki której aplikacje tzw kontrolery automatyzacji mogą uzyskiwać dostęp i manipulować (tj. ustawiać właściwości lub wywoływać metody) współdzielonymi obiektami automatyzacji , które są eksportowane przez inne aplikacje. Zastępuje dynamiczną wymianę danych (DDE), starszy mechanizm wzajemnej kontroli aplikacji. Podobnie jak w przypadku DDE, w OLE Automation „klientem” jest sterownik automatyki, a „serwerem” jest aplikacja eksportująca obiekty automatyki.

Wbrew swojej nazwie obiekty automatyzacji niekoniecznie korzystają z Microsoft OLE , chociaż niektóre obiekty automatyzacji mogą być używane w środowiskach OLE. Zamieszanie ma swoje korzenie we wcześniejszej definicji OLE firmy Microsoft, która wcześniej była mniej więcej synonimem COM.

Zalety i ograniczenia

Aby zapewnić interoperacyjność, interfejsy automatyzacji są ograniczone do korzystania z podzbioru wszystkich typów COM. W szczególności interfejsy automatyzacji muszą używać SAFEARRAY zamiast surowych tablic COM.

Serwery COM zgodne z automatyzacją mogą jednak polegać na wbudowanej implementacji kierowania OLE. Pozwala to uniknąć konieczności stosowania dodatkowych projektów proxy/stub do organizowania poza procesem.

Stosowanie

Automatyzacja została zaprojektowana z myślą o łatwości pisania skryptów, dlatego kontrolery często udostępniają użytkownikom końcowym języki, takie jak Visual Basic for Applications , umożliwiające im sterowanie obiektami automatyzacji za pomocą skryptów. Obiekty automatyzacji są często pisane w konwencjonalnych językach, takich jak C++ , w których atrybuty C++ mogą być używane w celu uproszczenia programowania. Języki takie jak Visual Basic i Borland Delphi zapewniają również wygodną składnię Automation, która ukrywa złożoność podstawowej implementacji.

Biblioteki typów

Aby zautomatyzować aplikację, twórca kontrolera automatyki musi znać model obiektowy używany przez aplikację docelową eksportującą obiekty aktywacji. Wymaga to, aby twórca aplikacji docelowej publicznie udokumentował swój model obiektowy. Tworzenie sterowników automatyki bez znajomości modelu obiektowego docelowej aplikacji jest „trudne lub niemożliwe”. Z powodu tych komplikacji komponenty Automation są zwykle dostarczane z bibliotekami typów , które zawierają metadane dotyczące klas, interfejsów i innych funkcji udostępnianych przez bibliotekę obiektów. Interfejsy są opisane w Język definicji interfejsu firmy Microsoft . Biblioteki typów można przeglądać za pomocą różnych narzędzi, takich jak przeglądarka obiektów Microsoft OLE/COM ( oleview.exe , część pakietu Microsoft Platform SDK ) lub przeglądarka obiektów w języku Visual Basic (do wersji 6) i Visual Studio .NET . Biblioteki typów są używane do generowania wzorców / kodów pośredniczących proxy do współpracy między modelem COM i innymi platformami, takimi jak Microsoft .NET i Java . Na przykład zestaw SDK .NET Framework zawiera narzędzia, które mogą generować proxy .NET DLL w celu uzyskania dostępu do obiektów Automation przy użyciu zarówno wczesnego wiązania (z informacjami o interfejsach wyodrębnionych z biblioteki typów), jak i późnego wiązania (przez IDispatch, zmapowany do .NET Reflection API), z wbudowanym Most .NET-to-COM o nazwie COM Interop . Chociaż Java nie ma wbudowanej obsługi COM, zestawy narzędzi, takie jak JACOB i jSegue, mogą generować kod źródłowy proxy (składający się z dwóch części, zestawu klas Java i źródła C++ dla natywnego interfejsu Java DLL) z bibliotek typów. Te rozwiązania działają tylko w systemie Windows. Kolejna biblioteka j-Interop oparta na Javie, która umożliwia współdziałanie z komponentami COM bez JNI , przy użyciu protokołu przewodowego DCOM (MSRPC) i działa również na platformach innych niż Windows.

Firma Microsoft publicznie udokumentowała model obiektowy wszystkich aplikacji pakietu Microsoft Office , a niektórzy inni programiści również udokumentowali modele obiektowe swoich aplikacji. Modele obiektowe są prezentowane sterownikom automatyki jako biblioteki typów, z ich interfejsami opisanymi w ODL .

Wsparcie językowe

Automatyzacja jest dostępna dla różnych języków, w tym między innymi:

Zobacz też

Dalsza lektura

Linki zewnętrzne

  • OLE Automation Ogólny artykuł na temat wprowadzenia i problemów z implementacją OLE.
  • VOLE — A Neat C++ COM/Automation Driver ” — niezależna od kompilatora biblioteka sterowników automatyzacji C++ COM/Automation o otwartym kodzie źródłowym, do użytku, gdy trzeba bezpośrednio sterować IDispatch. VOLE jest bardzo solidny, w pełni zawiera wszystkie „niskopoziomowe” aspekty IDispatch i jest bardzo elastyczny, przyjmując i zwracając normalne typy C++.