Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

COM Maciej Głowacki Aplikacja monolityczna Kod źródłowy Kompilacja Linkowanie Biblioteka dll Biblioteka statyczna Wywołanie Funkcji.

Podobne prezentacje


Prezentacja na temat: "COM Maciej Głowacki Aplikacja monolityczna Kod źródłowy Kompilacja Linkowanie Biblioteka dll Biblioteka statyczna Wywołanie Funkcji."— Zapis prezentacji:

1

2 COM Maciej Głowacki

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

4 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 Biblioteka statyczna Wywołanie Funkcji Aplikacja

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

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

7 Ewolucja oprogramowania ? Pojedyncze aplikacje Zestawy programów Zintegrowane środowisko obiektów zgodnych z COM

8 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 Komponent Interfejsy

9 Zalety COM Szybkie tworzenie aplikacji RAD (Rapid Apllication Developer) ABDCAB DA Biblioteka komponentów Aplikacja 2 Aplikacja 1

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

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

12 Ponowne użycie

13 Postacie COM Klient Klient proces In-process server Obiekt Komputer A

14 Postacie COM Klient ProxyObiekt Stub Klient procesServer proces Interprocess Komputer A

15 Postacie COM Klient ProxyObiekt Stub Klient procesServer proces RPC komputer Bkomputer A

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

17 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

18 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 {D01C25A2-6BF9-11d2-B3E7-CA99FFF43F40} Przykład GUID:

19 HRESULT, GUID i Rejestr Komputer HKEY_CLASSES_ROOT CLSID {D01C25A2-6BF9-11d2-B3E7-CA99FFF43F40} InprocServer32C:\WINDOWS\ARHIVE.DLLAla Przyjazna nazwa komponentu Lokalizacja komponentu Rozszerzenia plików GUID

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

21 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; };

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

23 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); };

24 Fabryka klas Klient CoGetClassObject Biblioteka COMDLL DllGetClassObject IClassFactory IArhive pIClassFactory pIArhive Tworzenie fabryki klas 4 zwraca IClassFactory 5 CreateInstance 7 zwraca IArhive 8 wywołanie funkcji

25 Automatyzacja Baza danychArkusz kalkulacyjny Edytor tekstu Wykres weź dane z bazy obrób je w arkuszu zrób wykres wklej do edytora wyślij do szefa AcessExcel Chart Word Outlok

26 IDispatch... GetTypeInfo GetIDsOfNames Invoke GetTypeInfoCount ala azor PrintLabel &ala &azor &PrintLabel DISPID

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

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

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


Pobierz ppt "COM Maciej Głowacki Aplikacja monolityczna Kod źródłowy Kompilacja Linkowanie Biblioteka dll Biblioteka statyczna Wywołanie Funkcji."

Podobne prezentacje


Reklamy Google