w modelu COM wprowadzenie Architektura składnikowa a architektura klient serwer Architektura klient-serwer Program składnikowy Jarosław Francik Serwer Składnik B Składnik A A 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 1 C++: Dziedziczenie 1 COM: Interfejsy i ich implementacja 1 Java: : Jedno i drugie 1 Program - monolit 1 Program składnikowy Składnik A Składnik B Składnik C Składnik D Składnik E 1 COM - Common Object Model OLE - Object Linking and Embedding Automatyzacja - Automation (dawniej: Automatyzacja OLE) DirectX DAO - Data Access Objects DCOM - Distributed COM 1 COM+ - technologia dla XXI wieku 1
Interfejsy Obiekt COM 1 Obiekt: kombinacja danych i metod 1 Klasy i interfejsy COM pozwala stosować wiele interfejsów dla jednej klasy 1 Hermetyzacja 1 Polimorfizm 1 Dziedziczenie COM zapewnia tylko dziedziczenie interfejsów Interfejsy są niezmienne Dodanie nowej funkcjonalności wymaga zdefiniowania nowego interfejsu 1 Obiektowość 1 Spójność 1 Niezależność od języka 1 Kontrola wersji Typy składników COM 1 Składniki wewnątrzprocesowe - DLL 1 Składniki zewnątrzprocesowe,, lokalne - EXE 1 Składniki zewnątrzprocesowe,, zdalne 1 Formanty OLE (wewnątrzprocesowe( wewnątrzprocesowe) - OCX 2
Składniki wewnątrzprocesowe 1 Działają w obrębie procesu klienta 1 Korzystają z przestrzeni adresowej klienta 1 Mniejsza stabilność 1 Wysoka wydajność Automatyzacja 1 Programowalność 1 Udostepnianie interfejsów 1 Użytkowanie za pomocą Visual Basic 1 Uproszczone interfejsy : dispatch interfaces (s) Składniki zewnątrzprocesowe Interfejsy (przypomnienie) Przetwarzanie żądań klienta w osobnym procesie i wątku Osobna przestrzeń adresowa 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 :: 1 Korzystanie z lokalnego składnika KLIENT PROXY COM SERWER 1 Korzystanie ze zdalnego składnika KLIENT PROXY DCOM (RPC) PROXY SERWER Invoke() { switch(dispid) } 1: Metoda1( ) 2: Metoda2( ) 3: Metoda3( ) 3
vs. :: (przypomnienie) 1 Visual Basic 1 C++ 1 Automatyzacja na ogół 1 dual interfaces Invoke() { switch(dispid) } 1: Metoda1( ) 2: Metoda2( ) 3: Metoda3( ) 1 Ewolucja: VBX Visual Basic Extension OLE Controls Controls 1 Cechy: Składniki oparte na COM (IUnknown( IUnknown) Możliwość samorejestracji (np. przy pobieraniu z Internetu) Interfejsy (przypomnienie) interfejs użytkownika metody zdarzenia właściwości 4
1 Implementacja obejmuje wiele interfejsów COM (typu ) 1 Z punktu widzenia użytkownika widoczne są przede wszystkim s IOleInPlaceFrame IOleInPlaceUIWindow IOleInPlaceSite IOleClientSite IAdviseSink IOleControlSite IPropertyNotifySink (events) IOlePlaceActiveObject IOleInPlaceObject IOleObject IDataObject IViewObject2 IRunnableObject IOleCache2 IPersistStorage IPersistStreamInit ISpecifyPropertyPages IConnectionPointContainer IConnectionPoint IProvideClassInfo2 IOleControl VB implementacja COM. Podsumowanie IOlePlaceActiveObject IOleInPlaceObject IOleObject IDataObject IViewObject2 IRunnableObject IOleCache2 IPersistStorage IPersistStreamInit ISpecifyPropertyPages IConnectionPointContainer IConnectionPoint IProvideClassInfo2 IOleControl 1 Automatyzacja użycie interfejsu 1 Metody zdefiniowane w i dostępne poprzez :: 1 Właściwości metody specjalnego typu dostępne w 1 Zdarzenia wywoływanie metod kontenera (odwrócenie sytuacji: kontener jest serwerem) VB implementacja COM. Podsumowanie IOleInPlaceFrame IOleInPlaceUIWindow IOleInPlaceSite IOleClientSite IAdviseSink IOleControlSite IPropertyNotifySink (events) Przy implementacji wszystkich typów składników COM Visual Basic korzysta z elementów technologii 5