Obiekty COM
description
Transcript of Obiekty COM
![Page 1: Obiekty COM](https://reader036.fdocuments.pl/reader036/viewer/2022062314/56814595550346895db2849a/html5/thumbnails/1.jpg)
Obiekty COMPrzemysław Buczkowski
![Page 2: Obiekty COM](https://reader036.fdocuments.pl/reader036/viewer/2022062314/56814595550346895db2849a/html5/thumbnails/2.jpg)
Plan prezentacji
1. Wprowadzenie do COM
2. Historia standardu
3. Jak działa COM
4. Interface IUknown
5. Paradygmaty COM
6. Implementacja serwera COM
7. Pytania na kolokwium
![Page 3: Obiekty COM](https://reader036.fdocuments.pl/reader036/viewer/2022062314/56814595550346895db2849a/html5/thumbnails/3.jpg)
COM – co to takiego?
• COM (ang. Component Object Model)to technologia firmy Microsoft z 1993 pozwalająca na współdzielenie i interakcje z binarnymi modułami za pomocą specjalnych interfece’ów. Wywodzi się z technologii OLE i OLE2. Współcześnie jest ciągle używana, jednak coraz częściej zastępowana jest przez technologie .NET’u o podobnej funkcjonajlości.
![Page 4: Obiekty COM](https://reader036.fdocuments.pl/reader036/viewer/2022062314/56814595550346895db2849a/html5/thumbnails/4.jpg)
Zalety COM
• definiuje pewien standard na poziomie binarnym, w oderwaniu od konkretnego narzędzia projektowego czy języka programowania
• użytkownikowi jest obojętne, gdzie znajduje się wykorzystywany komponent; jeżeli nawet znajduje się on na odległym komputerze, aplikacja klienta korzysta z niego w taki sam sposób, jak z komponentu lokalnego
![Page 5: Obiekty COM](https://reader036.fdocuments.pl/reader036/viewer/2022062314/56814595550346895db2849a/html5/thumbnails/5.jpg)
Wady COM
• zamknięty charakter technologii w związku z przywiązaniem do jednej platformy systemowej a nawet sprzętowej
• brak otwartych standardów
![Page 6: Obiekty COM](https://reader036.fdocuments.pl/reader036/viewer/2022062314/56814595550346895db2849a/html5/thumbnails/6.jpg)
Historia
DDE (Dynamic Data Exchange) (1987)
OLE (Object Linking and Embeding) (1991)
OLE2 (Object Linking and Embeding 2) (1992)
COM (Component Object Model) (1993)
OCXs (OLE custom controls),VBX->OCXs,OLE2->OLE (1994)
ActiveX, (OCXs, OLE) -> ActiveX (1996)
DCOM (Distributed COM) (1996)
COM+ ,(COM,DCOM) -> COM+ (2000)
![Page 7: Obiekty COM](https://reader036.fdocuments.pl/reader036/viewer/2022062314/56814595550346895db2849a/html5/thumbnails/7.jpg)
COM – jak działa?
• Pisząc component COM tworzymy w dowolnym wspieranym języku (!) binarkę obsługującą daną funkcjonalność w postaci klasy. Jednocześnie tworzymy publiczną umowę w postaci interface’u który pod unikalnym kluczem GUID rejestrujemy w rejestrze systemu. Klasa z naszej binarki musi oczywiście implementować publikowany interface.
![Page 8: Obiekty COM](https://reader036.fdocuments.pl/reader036/viewer/2022062314/56814595550346895db2849a/html5/thumbnails/8.jpg)
COM – jak działa 2?
• Ponadto klasa również posiada swój GUID. Do utworzenia definicji interface’u może służyć specjalny język Interface Definition Language, który po skompilowaniu narzędziem o nazwie MIDL (wchodzi w skład WinSDK) generuje pliki nagłówkowe, które dołączamy do projektu, w którym chcemy używać obiektu COM.
![Page 9: Obiekty COM](https://reader036.fdocuments.pl/reader036/viewer/2022062314/56814595550346895db2849a/html5/thumbnails/9.jpg)
COM – jak działa 3?
• W docelowym programie za pomocą WinApi lub ‘wyżejpoziomowych’ blibliotek jak np. ATL dla c++ wywołujemy funkcje, które zwracają wskaźniki na utworzone ‘poza’ programem klasy implementujące pożądany interface.
![Page 10: Obiekty COM](https://reader036.fdocuments.pl/reader036/viewer/2022062314/56814595550346895db2849a/html5/thumbnails/10.jpg)
Interface IUnknown
• Wszystkie definiowane interface’y muszą dziedziczyć z IUnknown, który zawiera trzy metody:
• AddRef(), Release() – są wywoływane przy tworzeniu i usuwaniu odnośnika do interface’u śledząc ilość odwołań
• QueryInterface() – pozwala uzyskać dostęp do obiektu poprzez inny, zadany obsługiwany przez niego interface
![Page 11: Obiekty COM](https://reader036.fdocuments.pl/reader036/viewer/2022062314/56814595550346895db2849a/html5/thumbnails/11.jpg)
Paradygmaty COM
• Dzięki temu komponenty COM są zwrotne, przechodnie i symetryczne.
• Zwrotne - można na obiekcie danego typu żądać QueryInterface() na własny typ
• Przechodnie - jeśli A można zamienić na B i B na C to wtedy można uzyskać C z A
• Symetryczne - jeśli z A można uzyskać B to z B można uzyskać A
![Page 12: Obiekty COM](https://reader036.fdocuments.pl/reader036/viewer/2022062314/56814595550346895db2849a/html5/thumbnails/12.jpg)
Implementacja
![Page 13: Obiekty COM](https://reader036.fdocuments.pl/reader036/viewer/2022062314/56814595550346895db2849a/html5/thumbnails/13.jpg)
Pytania
• Opisz własnymi słowami jak działa COM, wymień wady i zalety
• Wymień i opisz trzy metody które musi implementować każdy komponent