Technologie COM i ActiveX COM - Component Object Model

Podobne dokumenty
Programowanie składnikowe. Programowanie składnikowe w modelu COM. COM - Component Object Model. wprowadzenie. Programowanie składnikowe

Architektura składnikowa a architektura klient serwer. Programowanie składnikowe. Programowanie składnikowe w modelu COM

Microsoft Interface Definition Language

OLE: Pojęcia podstawowe

Kurs OPC S7. Spis treści. Dzień 1. I OPC motywacja, zakres zastosowań, podstawowe pojęcia dostępne specyfikacje (wersja 1501)

Komunikacja i wymiana danych

Programowanie współbieżne i rozproszone

Wywoływanie metod zdalnych

Spis treści. Dzień 1. I Wprowadzenie (wersja 0906) II Dostęp do danych bieżących specyfikacja OPC Data Access (wersja 0906) Kurs OPC S7

Programowanie obiektowe

Wywoływanie metod zdalnych

Henryk Budzisz. materiały przygotowane w ramach projektu ZPORR nr POKL /08-00

Interfejs IUnknown. Każdy obiekt COM musi implementować interfejs IUnknown, który zawiera trzy metody:

Protokoly w technologii obiektow rozproszonych - CORBA, RMI/IIOP, COM, SOAP. Paweł Kozioł p.koziol@students.mimuw.edu.pl

//////////////////////////////////////////////////////////// // Kalkulator (prosty) - wersja agregowalna import "unknwn.idl";

Zdalne uruchamianie obiektów COM

Remote Method Invocation 17 listopada 2010

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Podejście obiektowe do budowy systemów rozproszonych

Droga do DCOM DCOM (1996) Windows clipboard (1987) OLE 1 DDE (1992) OLE 2 (1993) COM (1995) Distributed computing (1980s)

Dostrzeżenie ograniczeń schowka [koniec lat 80-tych] OLE 1.0 [1991]

1.1. Kontrolki ActiveX. Kontrolki ActiveX. Technologia ActiveX. Technologia ActiveX. Technologia ActiveX. Technologia ActiveX.

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Rozproszone systemy internetowe. Wprowadzenie. Koncepcja zdalnego wywołania procedury

Obiekty w plikach wykonywalnych, marshaling

Remote Method Invocation 17 listopada rozproszonych. Dariusz Wawrzyniak (IIPP) 1

Podstawy programowania. Wprowadzenie

Spis treci. Dzie 1. I Wprowadzenie (wersja 0911) II Dostp do danych biecych specyfikacja OPC Data Access (wersja 0911)

Aplikacje RMI

Podejście obiektowe do budowy systemów rozproszonych

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Programowanie MorphX Ax

Systemy Rozproszone Technologia ICE

// LISTING #2 DRUGIE PODEJŚCIE

Structured storage, Monikers, Running Object Table

dr Zbigniew Lipiński Instytut Matematyki i Informatyki ul. Oleska Opole zlipinski@math.uni.opole.pl

Zdarzenia (events, connection points)

Wypożyczalnia VIDEO. Technologie obiektowe

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

// LISTING #2 DRUGIE PODEJŚCIE

Wykład Ćwiczenia Laboratorium Projekt Seminarium

Agregacja. Wykorzystanie innego komponentu bez użycia agregacji. Simple calculator. Extended calculator

Aplikacje RMI Lab4

Projektowanie architektury systemu. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Wprowadzenie do technologii OPC

Wprowadzenie. Dariusz Wawrzyniak 1

Integracja systemów sterowania i sterowanie rozproszone 5 R

Luxriot VMS. Dawid Adamczyk

Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI

Dokumentacja aplikacji Szachy online

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

Podyplomowe Studium Informatyki w Bizniesie Wydział Matematyki i Informatyki, Uniwersytet Łódzki specjalność: Tworzenie aplikacji w środowisku Oracle

Projektowanie logiki aplikacji

Michał Jankowski. Remoting w.net 2.0

Szczególne problemy projektowania aplikacji internetowych. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Programowanie obiektowe

Diagramy klas. dr Jarosław Skaruz

INFORMATYKA TECHNICZNA Badanie możliwości wykorzystania interfejsu automatyzacji OLE w systemie CAx

Projektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2017

RPC Remote Procedural Call. Materiały do prezentacji można znaleźć na stronie:

Enterprise Java Beans wykład 7 i 8

Instrukcja laboratoryjna nr.4

Technologie i usługi internetowe cz. 2

Kolejkowanie wiadomości Standard MQ (JMS)

Integracja Systemów Sterowania OPC

Programowanie rozproszone w języku Java

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r.

Programowanie Komponentowe WebAPI

Microsoft Visual Basic kontra Borland Delphi W wojnie o szybkość. Jacek Szarapa

Komputery przemysłowe i systemy wbudowane

76.Struktura oprogramowania rozproszonego.

Systemy Rozproszone - Ćwiczenie 6

Plan prezentacji. Budowa aplikacji w technologii Enterprise JavaBeans. Przegląd architektur: CORBA. Cele budowy aplikacji rozproszonych

Visual VM, Java Management extension i inne ciekawostki

Java JMX. Marcin Werla. Monitorowanie i zarządzanie usługami sieciowymi w Javie. mwerla@man.poznan.pl PCSS/Poznań JUG

Projektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2015

METODY URUCHAMIANIA PROGRAMÓW JĘZYKA AutoLISP W ŚRODOWISKU AutoCAD

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu

Budowa aplikacji w technologii. Enterprise JavaBeans. Maciej Zakrzewicz PLOUG

UML cz. II. UML cz. II 1/38

Oprogramowanie systemów równoległych i rozproszonych Wykład 7

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Systemy rozproszone. na użytkownikach systemu rozproszonego wrażenie pojedynczego i zintegrowanego systemu.

Middleware wprowadzenie października 2010

COOPERATION TASKS IN SERVER OF INFORMATION SCRIPTING SYSTEM

Middleware wprowadzenie października Dariusz Wawrzyniak (IIPP) 1

Interfejsy w Javie. Przykład zastosowania interfejsów:

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Architektury usług internetowych. Tomasz Boiński Mariusz Matuszek

Programowanie komponentowe 5

4 Web Forms i ASP.NET Web Forms Programowanie Web Forms Możliwości Web Forms Przetwarzanie Web Forms...152

Abstract Factory (fabryka abstrakcyjna)

Kurs Wizualizacja z WinCC SCADA - Zaawansowany. Spis treści. Dzień 1. I VBS w WinCC podstawy programowania (zmienne, instrukcje, pętle) (wersja 1410)

Integracja aplikacji opartych na Forms 5.0 z narzędziem do prezentowania map MapInfo Professional

Programowanie obiektowe

Dokumentacja projektu QUAIKE Architektura oprogramowania

Programowanie obiektowe

Transkrypt:

Technologie COM i COM - Component Object Model Jarosław Francik COM - Common Object Model Program - monolit Program składnikowy Składnik A Składnik B Składnik C Składnik D Składnik E Architektura składnikowa a architektura klient serwer Programowanie obiektowe a programowanie składnikowe Architektura klient-serwer A Serwer B Program składnikowy Składnik A Składnik B Składnik C Interfejs: Grupa właściwości i metod implementowanych przez klasę. C++: Dziedziczenie COM: Interfejsy i ich implementacja Java: Jedno i drugie 1

podejście firmy Microsoft podejście firmy Microsoft COM - Common Object Model OLE - Object Linking and Embedding Automatyzacja - Automation (dawniej: Automatyzacja OLE) DirectX DAO - Data Access Objects DCOM - Distributed COM COM+ - technologia dla XXI wieku Obiekt COM podejście firmy Microsoft Obiekt: kombinacja danych i metod Klasy i interfejsy COM pozwala stosować wiele interfejsów dla jednej klasy Hermetyzacja Polimorfizm Dziedziczenie COM zapewnia tylko dziedziczenie interfejsów podejście firmy Microsoft Obiektowość Spójność Niezależność od języka Kontrola wersji Interfejsy Nazwa czytelna: ISpellChecker Nazwa nieczytelna: Globally Unique IDentifier GUID IID CLSID Interfejsy [ object, uuid(e7cd0d00-1827-11cf-9946-444553540000) ] Interface ISpellChecker : IUnknown { import "unknwn.idl"; HRESULT LookUpWord([in] OLECHAR word[31], [out] boolean *found); HRESULT AddToDictionary([in] OLECHAR word[31]); HRESULT RemoveFromDictionary([in] OLECHAR[31]); } 2

Interfejsy Interfejs IUnknown QueryInterface() {...} ptr #1 ptr #2 AddRef() {...} ptr #3 Release() {...} ptr #4 ptr #5 LookUpWord() {...} ptr #6 AddToDictionary() {...} RemoveFromD...() {...} IUnknown::QueryInterface IUnknown::AddRef IUnknown::Release IUnknown::QueryInterface 1. wywołuje QueryInterface(IID) 2. Obiekt zwraca wskaźnik na interfejs 3. może wywoływać metody Składnik COM Serwer Interfejsy są niezmienne Dodanie nowej funkcjonalności wymaga zdefiniowania nowego interfejsu Klasy i interfejsy Klasa CLSID Interfejs IID Dwie różne klasy (o różnych CLSID) mogą implementować te same interfejsy Typy składników COM Składniki wewnątrzprocesowe - DLL Składniki zewnątrzprocesowe, lokalne - EXE Składniki zewnątrzprocesowe, zdalne y OLE (wewnątrzprocesowe) - OCX Przykład: implementacje interfejsu ISpellChecker pochodzące od różnych producentów 3

Składniki wewnątrzprocesowe Działają w obrębie procesu klienta Korzystają z przestrzeni adresowej klienta Mniejsza stabilność Wysoka wydajność Składniki zewnątrzprocesowe Przetwarzanie żądań klienta w osobnym procesie i wątku Osobna przestrzeń adresowa Wysoka stabilność Niższa wydajność (przekazywanie danych poprzez granice procesów) Możliwość uruchomienia jako niezależnej aplikacji Przydatne przy automatyzacji i w DCOM Przetwarzanie rozproszone w relacji klient - serwer Korzystanie z lokalnego składnika KLIENT PROXY COM STUB Korzystanie ze zdalnego składnika SERWER Tworzenie obiektów Znalezienie serwera (poprzez CLSID i rejestr systemowy) Stworzenie instancji Udostępnienie wskaźnika do interfejsu KLIENT PROXY STUB PROXY STUB SERWER CoCreateInstance DCOM (RPC) CoCreateInstance Class Factory 4. może wywoływać metody Serwer 4. może wywoływać metody Serwer 1. wywołuje CoCreateInstance (CLSID, IID) 3. Serwer udostępnia wskaźnik do interfejsu COM API Składnik COM 2. COM API lokalizuje serwer registry 3. Fabryka udostępnia wskaźnik interfejsu 1. wywołuje IClassFactory::CreateInstance(IID) Składnik COM Class factory 2. Fabryka tworzy obiekt i pobiera wskaźnik 4

Automatyzacja Interfejsy (przypomnienie) Programowalność Udostepnianie interfejsów Użytkowanie za pomocą Visual Basic Uproszczone interfejsy : dispatch interfaces (dispinterfaces) QueryInterface() {...} ptr #1 ptr #2 AddRef() {...} ptr #3 Release() {...} ptr #4 ptr #5 LookUpWord() {...} ptr #6 AddToDictionary() {...} RemoveFromD...() {...} dispinterface ::Invoke vs. Invoke() { switch(dispid) } 1: Metoda1( ) 2: Metoda2( ) 3: Metoda3( ) dispinterface Visual Basic C++ Automatyzacja na ogół dual interfaces Interfejsy (przypomnienie) QueryInterface() {...} ptr #1 ptr #2 AddRef() {...} ptr #3 Release() {...} ptr #4 ptr #5 LookUpWord() {...} ptr #6 AddToDictionary() {...} RemoveFromD...() {...} 5

dispinterface ::Invoke (przypomnienie) y Invoke() { switch(dispid) } 1: Metoda1( ) 2: Metoda2( ) 3: Metoda3( ) dispinterface Ewolucja: VBX Visual Basic Extension OLE Controls Controls Cechy: Składniki oparte na COM (IUnknown) Możliwość samorejestracji (np. przy pobieraniu z Internetu) y y interfejs użytkownika metody zdarzenia właściwości Implementacja obejmuje wiele interfejsów COM (typu ) Z punktu widzenia użytkownika widoczne są przede wszystkim dispinterfaces SERWER KLIENT SERWER KLIENT y y Container Site (events) 6

y interfejs użytkownika Site (events) Container Site (events) Container metody zdarzenia Site (events) Container Site (events) Container właściwości inne interfejsy Site (events) Container Site (events) Container 7

VB implementacja COM. Podsumowanie Automatyzacja użycie interfejsu Metody zdefiniowane w dispinterface i dostępne poprzez ::Invoke Właściwości metody specjalnego typu dostępne w dispinterface Zdarzenia wywoływanie metod dispinterface kontenera (odwrócenie sytuacji: kontener jest serwerem) VB implementacja COM. Podsumowanie Przy implementacji wszystkich typów składników COM Visual Basic korzysta z elementów technologii Implementacja COM i w C++ Czas na demonstrację... Dziękuję za uwagę 8