Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

COM Maciej Głowacki mglowa@softsystem.pl.

Podobne prezentacje


Prezentacja na temat: "COM Maciej Głowacki mglowa@softsystem.pl."— Zapis prezentacji:

1 COM Maciej Głowacki

2 Aplikacja monolityczna
Kod źródłowy Kompilacja Linkowanie Wywołanie Funkcji Aplikacja Biblioteka statyczna Biblioteka dll System operacyjny

3 Aplikacja + biblioteka statyczna
duży rozmiar kodu wynikowego każda aplikacja korzystająca z biblioteki posiada ją w sobie duże kłopoty przy zmianie kodu biblioteki Wywołanie Funkcji Aplikacja Biblioteka statyczna

4 Aplikacja + biblioteka dll
kłopoty przy zmianie kodu biblioteki Wywołanie Funkcji Aplikacja Biblioteka dll

5 Co robi COM ? Aplikacja Aplikacja Wywołanie Funkcji Biblioteka dll
Biblioteka statyczna Wywołanie Funkcji System operacyjny Biblioteka Wywołanie Funkcji Aplikacja System operacyjny

6 Ewolucja oprogramowania
Zintegrowane środowisko obiektów zgodnych z COM Zestawy programów ? 1985 1996 2000 2003 Pojedyncze aplikacje

7 Co to jest COM ? COM (Component Object Model)
specyfikacja jak tworzyć komponenty binarne komponenty gotowe do użycia niezależne od języka programowania ułatwia wersjowanie Interfejsy Komponent

8 Biblioteka komponentów
Zalety COM Szybkie tworzenie aplikacji RAD (Rapid Apllication Developer) A B A B Aplikacja 1 C D D A Aplikacja 2 Biblioteka komponentów

9 Zalety COM Niezależność od języka programowania
Smalltalk, Java, Python, Power Builder Działa tam gdzie jest zaimplementowany Windows, Macintosh, UNIX A Komponent napisany w C++ A B B Komponent napisany w Javie Aplikacja

10 Zalety COM Łatwość wersjowania komponentów Łatwa rozszerzalność A
Aplikacja 1 A Add Word Delete Word Aplikacja 2 Nowy interfejs Get Synonim

11 Ponowne użycie

12 Postacie COM Komputer A Klient proces Obiekt Klient
„In-process server”

13 Postacie COM Komputer A Klient Proxy Obiekt Stub Klient proces
Server proces Interprocess

14 Postacie COM Klient Proxy Obiekt Stub Klient proces Server proces RPC
komputer B komputer A

15 HRESULT, GUID i Rejestr HRESULT 32-bitowa liczba
S_... sukces , E_ ... porażka błąd S_OK definiowane jako 0 E_FALSE definiowane jako 1 31 30 16 15 15 bitów 16 bitów Wartość zwracana Dodatkowa informacja Status

16 HRESULT, GUID i Rejestr S_OK - sukces
NOERROR - takie same znaczenie jak S_OK S_FALSE - sukces zwraca false E_NOINTERFACE - nie wspiera interfejsu E_NOTIMPL - funkcja składowa nie istnieje E_FAIL - nieokreślony błąd

17 {D01C25A2-6BF9-11d2-B3E7-CA99FFF43F40}
HRESULT, GUID i Rejestr GUID (Globally Unique Identifier) niepowtarzalny identyfikator każdy interfejs posiada GUID GUIDGEN.EXE + kod źródłowy powtórzy się ok roku Przykład GUID: {D01C25A2-6BF9-11d2-B3E7-CA99FFF43F40}

18 HRESULT, GUID i Rejestr Komputer HKEY_CLASSES_ROOT Rozszerzenia plików
CLSID Przyjazna nazwa komponentu {D01C25A2-6BF9-11d2-B3E7-CA99FFF43F40} Ala GUID InprocServer32 C:\WINDOWS\ARHIVE.DLL Lokalizacja komponentu

19 HRESULT, GUID i Rejestr STDAPI DllRegisterServer()
STDAPI DllUnregisterServer() RegSvr32.exe

20 Interfejs IUnknown Podstawowy interfejs komponentów
Podstawowa funkcja QueryInterface Pytanie o interfejs class IUnknown { public: virtual HRESULT QueryInterface(REFIID iid,void** ppvObj)=0; virtual ULONG AddRef() = 0; virtual ULONG Release() = 0; };

21 Tworzenie komponentu 4 Klient Komponent
Wywołanie funkcji z interfejsu A A wskaźnik do interfejsu A 3 Wywołanie CoCreateIntance (CLSID_X, IID_A) 2 CLSID_X C:\WINDOWS\ALA.DLL CLSID_Y C:\TMP\AS.DLL Rejestr 1 CoCreateInstance Biblioteka COM

22 Fabryka klas CoCreateInstance tworzy komponent
Nie mamy możliwości kontrolowania IClassFactory interfejs tworzący komponenty IClassFactory2 wsparcie dla licencji interface IClassFactory : IUnknown { HRESULT CreateInstance(IUnknown* pUnknownOuther, const IID& iid, void** ppv); };

23 Tworzenie fabryki klas
Fabryka klas Klient CoGetClassObject Biblioteka COM DLL 1 2 DllGetClassObject CoGetClassObject 3 Tworzenie fabryki klas 4 zwraca IClassFactory 5 CreateInstance IClassFactory pIClassFactory 6 7 zwraca IArhive IArhive pIArhive 8 wywołanie funkcji

24 Automatyzacja Chart Wykres Baza danych Arkusz kalkulacyjny Acess Excel
Edytor tekstu Wykres weź dane z bazy obrób je w arkuszu Word zrób wykres wklej do edytora wyślij do szefa Outlok

25 IDispatch DISPID 1 2 3 „ala” „azor” „PrintLabel” ... GetTypeInfo
GetTypeInfoCount GetIDsOfNames 1 2 3 &ala Invoke &azor &PrintLabel DISPID

26 Tworzenie zdalnego komponentu
Klient Komponent 5 A 4 Wywołanie CoCreateIntance (CLSID_X, IID_A) 1 Rejestr CLSID_X C:\ALA.DLL 3 CoCreateInstance Biblioteka COM Rejestr CLSID_X softsystem.pl 2 CLSID_Y C:\TMP\AS.DLL

27 Tworzenie zdalnego komponentu
Klient Komponent 4 A 3 1 Wywołanie CoCreateIntanceExt (CLSID_X,IID_A,softsystem.p) Rejestr CLSID_X C:\ALA.DLL CoCreateInstance Biblioteka COM 2

28 Jak stworzyć COMa Klasyczne C++ Klasy MFC Biblioteka ATL inne ?


Pobierz ppt "COM Maciej Głowacki mglowa@softsystem.pl."

Podobne prezentacje


Reklamy Google