Osadzanie (embedding)

Transkrypt

Osadzanie (embedding)
OLE: Pojęcia podstawowe
OLE: Object Linking
and Embedding
Programowanie składnikowe
w modelu COM
• OLE – technologia polegająca na tworzeniu
złożonych dokumentów
• Przez pewien czas OLE było zbiorczą nazwą
technologii znanej obecnie jako COM
• Dokument złożony (compound document)
• Łączenie (linking) – dokument włączony
znajduje się w oddzielnym pliku
• Osadzanie (embedding) – dokument osadzony
jest przechowywany w obrębie dokumentu
złożonego (w magazynie IStorage)
Jarosław Francik
czerwiec 2002
Institute of Informatics, Silesian University of Technology, Gliwice, Poland
OLE: Pojęcia podstawowe
Institute of Informatics, Silesian University of Technology, Gliwice, Poland
Osadzanie (embedding)
• Kontener (container) – aplikacja obsługująca
dokumenty złożone; klient
• Serwer OLE – serwer udostępniający dokumenty
osadzane lub łączone
• Miniserwer OLE – serwer wewnątrzprocesowy,
nie występuje jako osobna aplikacja
(oferuje wyłącznie dokumenty osadzane)
• Pełny serwer OLE (full server) – serwer
zewnątzprocesowy
• Struktura obiektu magazynowego (IStorage)
Institute of Informatics, Silesian University of Technology, Gliwice, Poland
Institute of Informatics, Silesian University of Technology, Gliwice, Poland
Osadzanie (embedding)
IOleClientSite
– udostępnia
strona kontenera
(klienta)
root
root storage
storage
podsumowanie
podsumowanie
dokumentu
dokumentu
kontener OLE
obiekt
kliencki
(client site)
ShowObject – wymusza
wyświetlenie obiektu
IOleClientSite
IAdviceSink
RequestNewObjectLayout
IAdviceSink – ujście
różnego rodzaju notyfikacji
OnDataChange
OnViewChange
OnRename
OnSave
OnClose
Institute of Informatics, Silesian University of Technology, Gliwice, Poland
pula
pulaobiektów
obiektów
magazyn
magazynobiektów
obiektówosadzonych
osadzonych
arkusz
arkusz
kalkulacyjny
kalkulacyjny
cache
cache
prezentacji
prezentacji
CLSID
CLSID
Excel’a
Excel’a
Osadzanie (embedding)
strona serwera
serwerowi sterowanie
kontenerem
SaveObject – zapisuje
obiekt
dokument
dokument
MS
MSWord
Word
serwer OLE
IOleObject
IRunnableObject
IDataObject
IPersistStorage
IOleCache2
IOleCacheControl
IViewObject2
data
obiekt
cache
zawartości
(content
object)
Institute of Informatics, Silesian University of Technology, Gliwice, Poland
1
Osadzanie (embedding)
Osadzanie (embedding)
strona serwera
serwer in-proc
IOleObject
strona serwera
• Obiekt danych: IDataObject
serwer lokalny
IOleObject
IOleObject
IRunnableObject
IDataObject
IRunnableObject
IDataObject
IPersistStorage
IPersistStorage
data
cache
IDataObject
IPersistStorage
IOleCache2
IOleCache2
IOleCacheControl
IOleCacheControl
IViewObject2
IViewObject2
ujście
IAdviseSink
Institute of Informatics, Silesian University of Technology, Gliwice, Poland
strona serwera
• Trwałość obiektu: IPersistStorage
IOleObject
IDataObject
IPersistStorage
IOleCache2
IOleCacheControl
IViewObject2
IOleObject
IRunnableObject
IDataObject
• Kontener dostarcza magazyn danych
IStorage
system dostarcza standardową
implementację IStorage poprzez funkcję:
StgCreateStorageEx
IOleCache2
IViewObject2
Institute of Informatics, Silesian University of Technology, Gliwice, Poland
Osadzanie (embedding)
strona serwera
IDataObject
IPersistStorage
IOleCache2
IOleCacheControl
obsługa obiektu „cache prezentacji”
niezbędna do komunikacji z serwerem
lokalnym
IOleCacheControl
Osadzanie (embedding)
IRunnableObject
• Interfejsy obsługujące cache:
IOleCache2, IOleCacheControl
IPersistStorage
Institute of Informatics, Silesian University of Technology, Gliwice, Poland
IOleObject
GetData, SetData – transfer danych
QueryGetData – „znasz taki format danych?”
EnumFormatEtc – wymienia formaty danych
DAdvice, DUnadvice – mechanizm podobny
do punktów połączeń; nota bene:
współpracuje z interfejsem IAdviceSink
Osadzanie (embedding)
strona serwera
IRunnableObject
•
•
•
•
Institute of Informatics, Silesian University of Technology, Gliwice, Poland
Osadzanie (embedding)
– obsługa zapisywania – wykorzystywana
przez kontener po to, by zapisać
osadzony dokument w obrębie
dokumentu złożonego
– podstawa tzw. Uniform Data Transfer:
dane przesyłane z miejsca w miejsce w
standardowy sposób
– podstawa mechanizmów OLE Clipboard
i Drag and Drop
– Ważniejsze funkcje:
• Reprezentacja wizualna obiektu:
IViewObject2
– automatycznie przejmowana przez cache
– Najważniejsze funkcje:
• Draw
• GetColorSet
• GetExtent
IViewObject2
Institute of Informatics, Silesian University of Technology, Gliwice, Poland
strona serwera
• Obiekt OLE (IOleObject) i czasowniki
IOleObject
IRunnableObject
IDataObject
IPersistStorage
IOleCache2
IOleCacheControl
IViewObject2
– jeden z najistotniejszych interfejsów,
pozwalających na bezpośrednią
komunikację z obiektem OLE
– nigdy nie jest implementowany
przez obiekt cache
– Najważniejsze funkcje:
• SetClientSite
• DoVerb – wywołanie tzw. czasownika, np. w
celu edycji osadzonego dokumentu
• EnumVerbs
• GetExtent/SetExtent
Institute of Informatics, Silesian University of Technology, Gliwice, Poland
2
Osadzanie (embedding)
Łączenie (linking)
Aktywacja w miejscu (in-place activation)
• Dodatkowe interfejsy
• Struktura obiektu magazynowego (IStorage)
root
root storage
storage
• po stronie kontenera:
IOleInPlaceSite: rozszerzenie IOleClientSite
IOleInPlaceFrame: negocjacja wspólnego menu/toolbara
IOleInPlaceUIWindow: dalsze szczsegółowe negocjacje
• po stronie serwera:
IOleInPlaceObject:
IOleInPlaceActiveObject:
Institute of Informatics, Silesian University of Technology, Gliwice, Poland
podsumowanie
podsumowanie
dokumentu
dokumentu
dokument
dokument
MS
MSWord
Word
pula
pulaobiektów
obiektów
magazyn
magazynobiektów
obiektówwłączonych
włączonych
cache
cache
prezentacji
prezentacji
moniker
moniker
arkusza
arkusza
kalkulacyjnego
kalkulacyjnego
Institute of Informatics, Silesian University of Technology, Gliwice, Poland
Łączenie (linking)
• Po stronie kontenera (klienta):
– Obsługa łączenia przebiega po stronie kontenera
w ramach tych samych interfejsów, co w przypadku
osadzania.
– Wykorzystuje się moniker, który jest zapisywany
w dokumencie złożonym (magazynie) podobnie,
jak osadzony dokument
• Specjalne interfejsy:
– IOleLink – związany z obsługą monikera
– IPersistFile – wymagany przez monikery plikowe
Institute of Informatics, Silesian University of Technology, Gliwice, Poland
3

Podobne dokumenty