WYKŁADY (SEMESTR 7)
Poniższe jednostki tematyczne nie muszą odpowiadać jednostkom godzinowym wykładów>>> Materiały do pobrania (zestawienie)
Dokumenty:
- Programowanie składnikowe w modelu COM, wprowadzenie (prezentacja PowerPoint):
3 folie na stronę (10 stron, 145 KB) albo 6 folii na stronę (5 stron, 138 KB)- Składniki i interfejsy (prezentacja PowerPoint):
3 folie na stronę (4 strony, 96 KB) albo 6 folii na stronę (2 strony, 96 KB)- Interfejs IUnknown (prezentacja PowerPoint):
3 folie na stronę (6 stron, 122 KB) albo 6 folii na stronę (3 strony, 118 KB)- Funkcja CoCreateInstance, fabryki klas i serwery COM (prezentacja PowerPoint):
3 folie na stronę (5 stron, 90 KB) albo 6 folii na stronę (3 strony, 87 KB)- Tworzenie składników wewnątrzprocesowych (1 strona, 84 KB)
- IDL - ekspresowe wprowadzenie (2 strony, 115 KB)
- Tworzenie składników zewnątrzprocesowych (1 strona, 85 KB)
- Interfejs IDispatch, dispinterfejsy i automatyzacja (prezentacja PowerPoint):
3 folie na stronę (3 stron, 219 KB) albo 6 folii na stronę (2 strony, 229 KB)- Zawieranie i agregacja (prezentacja PowerPoint) - 3 folie na stronę (1 strona, 129 KB)
- Punkty połączeń (prezentacja PowerPoint) - 3 folie na stronę (1 strona, 165 KB)
- Zawieranie i agregacja oraz punkty połączeń (prezentacja PowerPoint) - 6 folii na stronę (1 strona, 165 KB)
- Wielowątkowość (opracowanie: Marek Mittmann) - 3 folie na stronę (3 strony, 88 KB) albo 6 folii na stronę (6 stron, 91 KB)
- Kategorie komponentów (prezentacja PowerPoint) - 3 folie na stronę (1 strona, 105 KB)
- Trwałość (persistency) (1 strona, 180 KB)
- Monikery (prezentacja PowerPoint):
3 folie na stronę (4 strony, 153 KB) albo 6 folii na stronę (2 strony, 151 KB)- OLE: Object Linking and Embedding (prezentacja PowerPoint):
3 folie na stronę (5 strony, 294 KB) albo 6 folii na stronę (3 strony, 290 KB)- Kontrolki ActiveX (prezentacja PowerPoint):
3 folie na stronę (4 strony, 136 KB) albo 6 folii na stronę (2 strony, 134 KB)- Inteligentne wskaźniki - wydruk przykładowej klasy (1 strona, 28 KB)
- ATL - Active Template Library: krótki wstęp do programowania (1 strona, 130 KB)
Kod źródłowy:
- Interfejsy IA i IB - podejście 1 (approach1.zip)
- Interfejsy IA i IB - podejście 2 (approach2.zip)
- Interfejsy IA i IB - podejście 2a (approach2a.zip)
- Interfejsy IA i IB - podejście 3 (approach3.zip)
- Interfejsy IA i IB - podejście 3a (approach3a.zip)
- Interfejsy IA i IB - podejście 4 (approach4.zip)
- Interfejsy IA i IB - podejście 5 (approach5.zip)
- Kalkulator prosty - podejście podstawowe (calcsimple.zip)
- Kalkulator prosty - rozwiązanie z agregowalną klasą składnika (calcaggr.zip)
- Kalkulator naukowy - poszerzenie funkcjonalności poprzez wykorzystanie agregacji (calcsci.zip)
- Kalkulator wywołujący zdarzenia VB (calccp.zip)
listingi programów dla tematów 2 - 7 (11 stron, 76 KB)
listingi programów dla tematów 8 - 9 (6 stron, 38 KB)
wszystkie programy źródłowe dla tematów 2 - 7 (cpp2com.zip)
wszystkie programy źródłowe dla tematów 8 - 9 (calc.zip)1. Pojęcia podstawowe
Wykład wprowadzający.
Wprowadzone koncepcje i techniki:
- COM, OLE, ActiveX
- programowanie składnikowe
- polimorfizm, hermetyzacja i dziedziczenie w technikach składnikowych
Materiały do pobrania:
- Programowanie składnikowe w modelu COM, wprowadzenie (prezentacja PowerPoint):
3 folie na stronę (10 stron, 145 KB) albo 6 folii na stronę (5 stron, 138 KB)2. Składniki i interfejsy
Wykład przedstawia najprostsze podejście: w pojedynczym pliku źródłowym część kodu odpowiadająca klientowi korzysta wprost z klasy C++ implementującej składnik. Podejście to nie zawiera żadnych elementów technologii COM.
Wprowadzone koncepcje i techniki:
- składniki, interfejsy i wskaźniki do interfejsów
Materiały do pobrania:
- Składniki i interfejsy (prezentacja PowerPoint):
3 folie na stronę (4 strony, 96 KB) albo 6 folii na stronę (2 strony, 96 KB)Kody żródłowe:
- Interfejsy IA i IB - podejście 1 (approach1.zip)
- listingi programów dla tematów 2 - 7 (11 stron, 76 KB)
3. Interfejs IUnknown
W prezentowanym tu podejściu zastosowano interfejs IUnknown by częściowo uniezależnić kod źródłowy klienta od kodu serwera. Wszystko, co klient musi wiedzieć o używanych przez siebie składnikach, to definicja implementowanych przez nie interfejsów oraz identyfikatory IID. Wskaźniki na potrzebne interfejsy klient otrzymuje za pośrednictwem funkcji IUnknown::QueryInterface - zgodnie ze standardem COM. Słabym punktem rozwiązania pozostaje funkcja o nazwie CreateInstance, której zadaniem jest dostarczenie egzemplarza obiektu o interfejsie IUnknown. Funkcja ta jest implementowana przez serwer, jednak klient wciąż musi się do niej odwoływać poprzez statyczne linkowanie.
Wprowadzone koncepcje i techniki:
- wskaźników do interfejsów - koncepcja zgodna z technologią COM
- interfejs IUnknown i funkcja QueryInterface
- zliczanie wystąpień (AddRef / Release)
- identyfikatory interfejsów IID
Materiały do pobrania:
- Interfejs IUnknown (prezentacja PowerPoint):
3 folie na stronę (6 stron, 122 KB) albo 6 folii na stronę (3 strony, 118 KB)Kody żródłowe:
- Interfejsy IA i IB - podejście 2 (approach2.zip)
- Interfejsy IA i IB - podejście 2a (approach2a.zip)
- listingi programów dla tematów 2 - 7 (11 stron, 76 KB)
W podejściu 2a wprowadzono rozdzielną kompilację klienta (exe) i serwera (dll). Należy niezależnie skompilować projekty Client i Server i dopilnować, by wygenerowany w ramach projektu Server plik dll był widoczny dla programu typu exe.4. Fabryki klas
Rozwiązanie tu przedstawione to już faktyczny klient i serwer COM. Klient odwołuje się do serwera poprzez jego CLSID, przy pomocy funkcji CoCreateInstance. Rezydujący w module DLL serwer to w pełni funkcjonalny serwer COM.
Wprowadzone koncepcje i techniki:
- serwery i klienci COM
- funkcja CoCreateinstance
- identyfikatory CLSID
- fabryka klas - IClassFactory
- dostęp do fabryki klas - Funkcja DllGetClassObject
- rejestracja COM - funkcje DllRegisterServer i DllUnregisterServer
- kontrola obecności w pamięci - funkcja DllCanUnloadNow
Materiały do pobrania:
- Funkcja CoCreateInstance, fabryki klas i serwery COM (prezentacja PowerPoint):
3 folie na stronę (5 stron, 90 KB) albo 6 folii na stronę (3 strony, 87 KB)Kody żródłowe:
- Interfejsy IA i IB - podejście 3 (approach3.zip)
- listingi programów dla tematów 2 - 7 (11 stron, 76 KB)
Uwagi o kompilacji:należy niezależnie skompilować projekty Client i Server, a następnie zarejestrować wygenerowany w ramach projektu Server plik dll (poprzez użycie opcji Tools|Register Control w Visual Studio lub wywołanie programu regsvr32).5. Tworzenie składników wewnątrzprocesowych
Przedstawione rozwiązanie kodu źródłowego nie odbiega zanadto od poprzedniego. Główna różnica polega na zastosowaniu pliku IDL. W wyniku jego kompilacji powstają między innymi pliki zawierające definicje interfejsów (mytypes.h) oraz identyfikatorów GUID (mytypes_i.c), które zastepują wcześniej używane pliki interface.h i guid.cpp. Wykład uzupełnia i porządkuje informacje dotyczące tworzenia serwerów wewnątrzprocesowych.
Wprowadzone koncepcje i techniki:
- Pliki IDL
Materiały do pobrania:
- Tworzenie składników wewnątrzprocesowych (1 strona, 84 KB)
- IDL - ekspresowe wprowadzenie (2 strony, 115 KB)
Kody żródłowe:
- Interfejsy IA i IB - podejście 3a (approach3a.zip)
- listingi programów dla tematów 2 - 7 (11 stron, 76 KB)
Uwagi o kompilacji:przed skompilowaniem projektu należy skopiować plik VCVARS32.BAT z katalogu vc98/bin pakietu Visual Studio 6 (np. c:/program files/Microsoft Visual Studio/VC98/Bin) do głównego katalogu projektu (w miejsce istniejącego pliku o takiej samej nazwie), a następnie wywołać polecenie run_midl.bat celem skompilowania pliku typu IDL. Następnie należy niezależnie skompilować projekty Client i Server, a na koniec zarejestrować wygenerowany w ramach projektu Server plik dll (poprzez użycie opcji Tools|Register Control w Visual Studio lub wywołanie programu regsvr32).6. Tworzenie składników zewnątrzprocesowych
W tej sekcji przedstawiono serwer zewnątrzprocesowy, rezydujący w pliku EXE, oraz odpowiedni program klienta.
Wprowadzone koncepcje i techniki:
- szeregowanie (marshaling)
- wywoływanie serwerów zewnątrzprocesowych
- tworzenie modułów proxy
- serwery zewnątrzprocesowe
- analiza poleceń linii wykonania: /RegServer, /UnregServer i /Embedding
- rejestrowanie i wyrejestrowywanie fabryk klas (CoRegisterClassObject, CoRevokeClassObject )
- zarządzanie usuwaniem serwera EXE z pamięci
- rejestrowanie serwerów zewnątrzprocesowych
Materiały do pobrania:
- Tworzenie składników zewnątrzprocesowych (1 strona, 85 KB)
Kody żródłowe:
- Interfejsy IA i IB - podejście 4 (approach4.zip)
- listingi programów dla tematów 2 - 7 (11 stron, 76 KB)
Uwagi o kompilacji: przed skompilowaniem projektu należy skopiować plik VCVARS32.BAT z katalogu vc98/bin pakietu Visual Studio 6 (np. c:/program files/Microsoft Visual Studio/VC98/Bin) do głównego katalogu projektu (w miejsce istniejącego pliku o takiej samej nazwie), a następnie wywołać polecenie run_midl.bat celem skompilowania pliku typu IDL. Następnie należy niezależnie skompilować projekty Client, Proxy i OutProcServer. Na koniec należy zarejestrować wygenerowany w ramach projektu Proxy plik proxy.dll (poprzez użycie opcji Tools|Register Control w Visual Studio lub wywołanie programu regsvr32) oraz zarejestrować program będący serwerem COM - poprzez uruchomienie go z opcją /RegServer.7. interfejs IDispatch i automatyzacja
Przedstawiono interfejs IDispatch i interfejsy dispatch (dispinterfejsy), a także interfejsy podwójne (dual). Prezentowany tu kod źródłowy rozszerza poprzednie rozwiązanie w taki sposób, że interfejs IA staje się interfejsem typu dual. Aplikacja kliencka pozostaje bez zmian; dodano nowy program ClientDisp - klienta korzystającego z interfejsu IDispatch oraz ClientVB - klienta napisanego w Visual Basicu.
Wprowadzone koncepcje i techniki:
- Interfejs IDispatch
- Interfejsy typu dual
- Tworzenie serwerów dual z wykorzystaniem obiektów ITypeInfo
Materiały do pobrania:
- Interfejs IDispatch, dispinterfejsy i automatyzacja (prezentacja PowerPoint):
3 folie na stronę (3 stron, 219 KB) albo 6 folii na stronę (2 strony, 229 KB)Kody żródłowe:
- Interfejsy IA i IB - podejście 5 (approach5.zip)
- listingi programów dla tematów 2 - 7 (11 stron, 76 KB)
8. Zawieranie i agregacja
Wykład przedstawia koncepcję zawierania i agregacji.
Ilustrację dla wykładu stanowi nowy progam przykładowy, który zawiera serwer implementujący prosty kalkulator. W wersji agregowanej dodano nową funkcjonalność (pierwiastkowanie), dziedzicząc resztę implementacji.
Wprowadzone koncepcje i techniki:
- Zawieranie
- Agregacja
- Delegowanie odwołań IUnkonown
Materiały do pobrania:
- Zawieranie i agregacja (prezentacja PowerPoint) - 3 folie na stronę (1 strona, 129 KB)
- Zawieranie i agregacja oraz punkty połączeń (prezentacja PowerPoint) - 6 folii na stronę (1 strona, 165 KB)
Kody żródłowe:
- Kalkulator prosty - podejście podstawowe (calcsimple.zip)
- Kalkulator prosty - rozwiązanie z agregowalną klasą składnika (calcaggr.zip)
- Kalkulator naukowy - poszerzenie funkcjonalności poprzez wykorzystanie agregacji (calcsci.zip)
- listingi programów dla tematów 8 - 9 (6 stron, 38 KB)
9. Punkty połączeń
Wykład przedstawia koncepcję punktów połączeń.
Ilustracją wykładu jest rozbudowa przykładowego programu z poprzedniego punktu (prostego kalkulatora) o obsługe punktów połączeń. Umożliwiło to wykorzystanie mechanizmu zdarzeń (events) na poziomie programu w Visual Basicu.
Wprowadzone koncepcje i techniki:
- Interfejs IConnectionPoint
- Interfejs IConnectionPointContainer
Materiały do pobrania:
- Punkty połączeń (prezentacja PowerPoint) - 3 folie na stronę (1 strona, 165 KB)
- Zawieranie i agregacja oraz punkty połączeń (prezentacja PowerPoint) - 6 folii na stronę (1 strona, 137 KB)
Kody żródłowe:
- Kalkulator wywołujący zdarzenia VB (calccp.zip)
- listingi programów dla tematów 8 - 9 (6 stron, 38 KB)
10. Wielowątkowość (Wykład opracowany przez Marka Mittmanna)
Wykład przedstawia kwestie związane z wielowątkowością w technologii COM.Wprowadzone koncepcje:
- Wątki i przedziały
- Przedziały jednowątkowe, wielowątkowe i neutralne
- Przypisywanie do przedziałów
- Współdziałanie przedziałów
- Przekazywanie interfejsów pomiędzy przedziałami
Materiały do pobrania:
- Wielowątkowość w COM, opracowanie: Marek Mittmann - 3 folie na stronę (3 strony, 88 KB) albo 6 folii na stronę (6 stron, 91 KB)
11. Kategorie komponentów
Wprowadzone koncepcje i techniki:
- Kategorie komponentów
- Domyślne klasy i emulacja klas
- Zarządca kategorii komponentów (Component Categories Manager)
Materiały do pobrania:
- Kategorie komponentów (prezentacja PowerPoint) - 3 folie na stronę (1 strona, 105 KB)
12. Trwałość obiektów
Wprowadzone koncepcje i techniki:
- Rodzina interfejsów IPersist
- Interfejs IPersistStream/IPersistStreamInit
- Zapis i odczyt trwałych obiektów
- Zestawy właściwości (property bags)
Materiały do pobrania:
- Trwałość (persistency) (1 strona, 180 KB)
13. Monikery
Wprowadzone koncepcje i techniki:
- Monikery - istota działania
- Monikery standardowe
- Interfejs IMoniker
- Stosowanie nazw symbolicznych
- Dowiązywanie obiektów
- Monikery złożone
- Zastosowanie monikerów w technologii OLE Linking
Materiały do pobrania:
- Monikey (prezentacja PowerPoint):
3 folie na stronę (4 strony, 153 KB) albo 6 folii na stronę (2 strony, 151 KB)14. Technologia OLE
Wprowadzone koncepcje i techniki:
- OLE: pojęcia podstawowe
- Osadzanie: struktura obiektu magazynowego IStorage
- Interfejsy strony kontenera i sewera
- Aktywacja w miejscu
- Łączenie
Materiały do pobrania:
- OLE: Object Linking and Embedding (prezentacja PowerPoint):
3 folie na stronę (5 strony, 294 KB) albo 6 folii na stronę (3 strony, 290 KB)15. Technologia ActiveX
Wprowadzone koncepcje i techniki:
- Kontrolki VBX, OLE Controls, specyfikacja ActiveX
- Udostępnianie interfejsu użytkownika
- Zdarzenia
- Metody
- Właściwości
Materiały do pobrania:
- Kontrolki ActiveX (prezentacja PowerPoint):
3 folie na stronę (4 strony, 136 KB) albo 6 folii na stronę (2 strony, 134 KB)16. Aspekty praktyczne i biblioteka ATL
Wykład przedstawia kilka koncepcji uproszczenia pracy programisty, a także wprowadza w programowanie z wykorzystaniem biblioteki ATL - Active Template Library
Wprowadzone koncepcje i techniki:
- koncepcja "inteligentnych wskaźników" (smart pointers)
- ułatwienia w implementacji interfejsu IUnknown i fabryki klas
- biblioteka ATL - Active Template Library
Materiały do pobrania:
- Inteligentne wskaźniki - wydruk przykładowej klasy (1 strona, 28 KB)
- ATL - Active Template Library: krótki wstęp do programowania (1 strona, 130 KB)
LABORATORIUM (SEMESTR 7)
- Zapoznanie ze środowiskiem Visual Basic
- Ćwiczenie 1: Składniki wewnątrzprocesowe (63 KB)
- Ćwiczenie 2: Składniki zewnątrzprocesowe (108 KB)
- Ćwiczenie 1: Kontrolki ActiveX (92 KB)
LABORATORIUM (SEMESTR 8)
- Ćwiczenie 1: Automatyzacja - tworzenie klientów i serwerów automatyzacji
instrukcja do ćwiczenia (96 KB)
program przykładowy (42 KB)- Ćwiczenie 2: Aplikacje OLE - stworzenie aplikacji serwera i klienta w technologii OLE
instrukcja do ćwiczenia (145 KB)
program przykładowy (54 KB)- Ćwiczenie 3: Tworzenie składników i kontrolek ActiveX z użyciem biblioteki ATL
instrukcja do ćwiczenia (129 KB)- Ćwiczenie 4: COM - zastosowania sieciowe - tworzenie aplikcji korzystających z DCOM (Distributed COM) - oprac. Wojciech Pytlik
instrukcja do ćwiczenia (124 KB)
programy przykładowe (38 KB)- Ćwiczenie 5: Zastosowanie bazodanowe COM - wykorzystanie technik opartych o specyfikację COM (OLE DB/ADO) przy tworzeniu aplikacji bazodanowej
instrukcja do ćwiczenia (153 KB)
programy przykładowe (16 KB)- Ćwiczenie 6: Rozszerzenia powłoki systemowej
instrukcja do ćwiczenia (148 KB)
programy przykładowe (17 KB)
Ta strona jest częścią
strony domowej Jarosława Francika.
Copyright © 2000-02 by Jaroslaw Francik
Data ostatniej modyfikacji: 19/11/02