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

Podobne dokumenty