6 folii na stronę
Transkrypt
6 folii na stronę
Programowanie składnikowe w modelu COM wprowadzenie Architektura składnikowa a architektura klient serwer Architektura klientklient-serwer Program składnikowy Składnik A Serwer Jarosław Francik Składnik B Klient A Klient B Składnik C Programowanie obiektowe a programowanie składnikowe COM - Component Object Model 1 Interfejs: Grupa właściwości i metod implementowanych przez klasę. Kontrakt pomiędzy klientem a składnikiem Programowanie składnikowe 1 C++: Dziedziczenie 1 COM: Interfejsy i ich implementacja 1 Java: Java: Jedno i drugie Programowanie składnikowe 1 Program - monolit Składnik B Składnik C podejście firmy Microsoft 1 COM - Common Object Model 1 Program składnikowy Składnik A Programowanie składnikowe Składnik D Składnik E • OLE - Object Linking and Embedding • Automatyzacja - Automation (dawniej: Automatyzacja OLE) • ActiveX • DirectX • DAO - Data Access Objects • DCOM - Distributed COM 1 COM+ - technologia dla XXI wieku 1 Programowanie składnikowe podejście firmy Microsoft Interfejsy Klient Klient Obiekt COM Składnik COM ptr #1 ptr #2 ptr #3 ptr #4 ptr #5 ptr #6 vtable QueryInterface() {...} AddRef() {...} Release() {...} LookUpWord() {...} AddToDictionary() {...} RemoveFromD...() {...} Programowanie składnikowe podejście firmy Microsoft 1 Obiekt: kombinacja danych i metod 1 Klasy i interfejsy COM pozwala stosować wiele interfejsów dla jednej klasy 1 Hermetyzacja 1 Polimorfizm Interfejsy są niezmienne Dodanie nowej funkcjonalności wymaga zdefiniowania nowego interfejsu 1 Dziedziczenie COM zapewnia tylko dziedziczenie interfejsów Programowanie składnikowe podejście firmy Microsoft Typy składników COM 1 Obiektowość 1 Składniki wewnątrzprocesowe - DLL 1 Spójność 1 Składniki zewnątrzprocesowe, zewnątrzprocesowe, lokalne - EXE 1 Niezależność od języka 1 Składniki zewnątrzprocesowe, zewnątrzprocesowe, zdalne 1 Kontrola wersji 1 Formanty OLE (wewnątrzprocesowe (wewnątrzprocesowe)) - OCX 2 Składniki wewnątrzprocesowe Automatyzacja 1 Działają w obrębie procesu klienta 1 Programowalność 1 Korzystają z przestrzeni adresowej klienta 1 Udostepnianie interfejsów 1 Użytkowanie za pomocą Visual Basic 1 Mniejsza stabilność 1 „Uproszczone interfejsy”: • IDispatch • dispatch interfaces (dispinterfaces) dispinterfaces) 1 Wysoka wydajność Składniki zewnątrzprocesowe Przetwarzanie żądań klienta w osobnym procesie i wątku Osobna przestrzeń adresowa Interfejsy (przypomnienie) Klient ptr #1 ptr #2 ptr #3 Wysoka stabilność Niższa wydajność (przekazywanie danych poprzez granice procesów) Możliwość uruchomienia jako niezależnej aplikacji Przydatne przy automatyzacji i w DCOM Przetwarzanie rozproszone w relacji klient - serwer STUB vtable PROXY STUB PROXY DCOM (RPC) Release() {...} LookUpWord() {...} AddToDictionary() {...} RemoveFromD...() {...} Klient Składnik COM SERWER Invoke() { switch(DISPID) 1 Korzystanie ze zdalnego składnika KLIENT AddRef() {...} STUB 1: Metoda1( ) 2: Metoda2( ) SERWER 3: Metoda3( ) IDispatch vtable } dispinterface COM PROXY ptr #4 ptr #5 ptr #6 QueryInterface() {...} dispinterface IDispatch:: Invoke IDispatch::Invoke 1 Korzystanie z lokalnego składnika KLIENT Składnik COM 3 1 Visual Basic – IDispatch 1 C++ – vtable Składnik COM Klient 1 Automatyzacja – na ogół IDispatch Invoke() { switch(DISPID) 1 dual interfaces 1: Metoda1( ) 2: Metoda2( ) 3: Metoda3( ) IDispatch vtable } dispinterface vtable vs. vs. IDispatch dispinterface IDispatch:: Invoke IDispatch::Invoke (przypomnienie) Kontrolki ActiveX ActiveX 1 Ewolucja: • • • VBX – Visual Basic Extension OLE Controls ActiveX Controls 1 Cechy: • Składniki oparte na COM (IUnknown (IUnknown)) • Możliwość samorejestracji (np. przy pobieraniu z Internetu) Interfejsy (przypomnienie) Klient Składnik COM ptr #1 ptr #2 ptr #3 ptr #4 ptr #5 ptr #6 vtable QueryInterface() {...} AddRef() {...} Release() {...} LookUpWord() {...} AddToDictionary() {...} Kontrolki ActiveX interfejs użytkownika Kontener Kontrolka ActiveX metody zdarzenia właściwości RemoveFromD...() {...} 4 Kontrolki ActiveX 1 Implementacja obejmuje wiele interfejsów COM (typu vtable) vtable) 1 Z punktu widzenia użytkownika widoczne są przede wszystkim dispinterfaces Kontrolki ActiveX Kontener IOleInPlaceFrame IOleInPlaceUIWindow IOleInPlaceSite IOlePlaceActiveObject IOleClientSite IOleInPlaceObject IAdviseSink IOleObject IOleControlSite IDataObject IDispatch IViewObject2 IPropertyNotifySink IRunnableObject IDispatch (events) IOleCache2 Kontrolka ActiveX IPersistStorage IPersistStreamInit ISpecifyPropertyPages IConnectionPointContainer IConnectionPoint IProvideClassInfo2 IDispatch IOleControl Kontrolki ActiveX IOlePlaceActiveObject IOleInPlaceObject IOleObject IDataObject IViewObject2 IRunnableObject IOleCache2 IPersistStorage IPersistStreamInit ISpecifyPropertyPages IConnectionPointContainer IConnectionPoint IProvideClassInfo2 IDispatch IOleControl 1 Automatyzacja – użycie interfejsu IDispatch Kontrolka ActiveX 1 Metody – zdefiniowane w dispinterface i dostępne poprzez IDispatch:: Invoke IDispatch::Invoke 1 Właściwości – metody specjalnego typu dostępne w dispinterface 1 Zdarzenia – wywoływanie metod dispinterface kontenera (odwrócenie sytuacji: kontener jest serwerem) Kontrolki ActiveX Kontener VB – implementacja COM. Podsumowanie IOleInPlaceFrame IOleInPlaceUIWindow IOleInPlaceSite IOleClientSite IAdviseSink IOleControlSite IDispatch IPropertyNotifySink IDispatch (events) VB – implementacja COM. Podsumowanie Przy implementacji wszystkich typów składników COM Visual Basic korzysta z elementów technologii ActiveX 5