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