COM Maciej Głowacki mglowa@softsystem.pl.

Slides:



Advertisements
Podobne prezentacje
C++ wykład 4 ( ) Przeciążanie operatorów.
Advertisements

Deklaracje i definicje klas w C++ Składowe, pola, metody Konstruktory
PSZ wykład 2 > Przegląd komponentów biblioteki VCL
Generics w .NET 2.0 Łukasz Rzeszot.
Obiektowe metody projektowania systemów Design Patterns STRATEGY.
Systemy rozproszone W. Bartkiewicz
Systemy rozproszone W. Bartkiewicz
CORBA Łukasz Wnęk.
Architektura systemu Gra strategiczna „Strusia Jama”
Obiektowe metody projektowania systemów
Obiektowe metody projektowania systemów
Programowanie w środowiskach zintegrowanych wykład 1 PSZ Programowanie w Środowiskach Zintegrowanych > Systemy i środowiska zintegrowane > Środowisko zintegrowane.
Systemy operacyjne Wykład nr 5: Wątki Piotr Bilski.
Biblioteki i przestrzenie nazw
C++ wykład 6 ( ) Polimorfizm.
Koordynatorzy: Krzysztof BIKONIS Marek MOSZYŃSKI
Wykład 2 struktura programu elementy języka typy zmienne
P I OTR SKOŁYSZ. POCHODZENIE I CELE CZYM JEST.NET ? CO IMPLEMENTUJE MONO ? ŚRODOWISKO PRACY [MONODEVELOP] SYTEMY OPERACYJNE CO PROGRAMOWAĆ ? JĘZYKI PRZYKŁADOWY.
Java – programowanie obiektowe
SZPIF – Harmonogram, Opis narzędzi, Schemat bazy danych
Budowa, przeglądanie i modyfikacja
Patrycja Galik Klasa III B
Test Doubles Adam Gabryś , v1.1,
Podstawy programowania II Wykład 2: Biblioteka stdio.h Zachodniopomorska Szkoła Biznesu.
WSPARCIE DLA BIZNESU / STR. 2 Mikołaj Gomółka UpGreat Systemy Komputerowe Sp. z o.o Poznań, ul Ostrobramska 22 Tel Faks: 0-61.
Instytut Tele- i Radiotechniczny WARSZAWA
Komponentowe systemy rozproszone
Podstawy programowania. Język C i C++– podstawy Temat: 1
Technologie tworzenia aplikacji internetowych Wykład 3
Dr hab. Dariusz Piwczyński Katedra Genetyki i Podstaw Hodowli Zwierząt
Tworzenie aplikacji mobilnych
Mechanizm OLE ang. Object Linking and Embedding źródła:
Programowanie obiektowe – zastosowanie języka Java SE
WPROWADZENIE W ŚWIAT OBIEKTÓW
Inicjalizacja i sprzątanie
JAVA.
Wykonał: Michał Nikołajuk
Programowanie obiektowe Wykład 3 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Dariusz Wardowski.
Programowanie obiektowe Wykład 6 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Dariusz Wardowski.
Narzędzia administracyjne
Systemy zarządzania treścią Wykład 5
Technologie Programowania seminarium
Kurs języka C++ – wykład 3 ( )
Programowanie w języku C++
Service Oriented Architecture
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Oprogramowanie komponentowe w środowisku Microsoft Katarzyna Kuźniar 4 FDA, C1.
Kurs języka C++ – wykład 4 ( )
Podstawy języka skryptów
© DSRG 2004 Systemy Rozproszone - Zdalne wywołanie procedury 1 Zdalne wywołanie procedury Implementacja Sun RPC Ćwiczenie laboratoryje:
Waldemar Bartyna 1 Programowanie zaawansowane LINQ to XML.
Obiekty COM Przemysław Buczkowski. Plan prezentacji 1.Wprowadzenie do COM 2.Historia standardu 3.Jak działa COM 4.Interface IUknown 5.Paradygmaty COM.
Wzorce Projektowe w JAVA
Platforma .Net.
Podstawy programowania
Dokumentacja programu komputerowego i etapy tworzenia programów.
Temat: Porównanie technologii php,c# oraz javascript na przykładzie webaplikacji typu społecznościowy agregator treści Autor: Wojciech Ślawski.
1 Co nowego w i-cut Suite i-cut Layout 14.0.
 Podstawowy składnik.NET Framework  Technologia tworzenia w pełni dynamicznych stron internetowych działających po stronie serwera  Zorientowanie na.
K URS JĘZYKA C++ – WYKŁAD 3 ( ) Przenoszenie Składowe statyczne Funkcje wbudowane Argumenty domyślne.
Komponentowe systemy rozproszone COM i inni. Komunikacja/komponenty w WINDOWS w ujęciu historycznym 1. Schowek 2. DDE bitowe OLE bitowe.
Programowanie Obiektowe – Wykład 6
Systemy operacyjne. Pliki i foldery.
(według:
Programowanie obiektowe – zastosowanie języka Java SE
JavaBeans by Paweł Wąsala
Czym są i jak służą społeczeństwu?
Zapis prezentacji:

COM Maciej Głowacki mglowa@softsystem.pl

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

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

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

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

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

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

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

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

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

Ponowne użycie

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

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

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

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

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

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

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

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

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

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

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

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

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 Email Outlok

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

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

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

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