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



Podobne dokumenty
Programowanie współbieżne i rozproszone

Komunikacja i wymiana danych

1 Wprowadzenie do J2EE

Programowanie obiektowe

Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI

Wywoływanie metod zdalnych

Simple Object Access Protocol

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

Aplikacje RMI

Programowanie Komponentowe WebAPI

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

Plan wykładu CORBA. Cechy aplikacji rozproszonych. Aplikacje rozproszone

Wywoływanie metod zdalnych

Budowa aplikacji w technologii. Enterprise JavaBeans. Maciej Zakrzewicz PLOUG

76.Struktura oprogramowania rozproszonego.

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

Technologie COM i ActiveX COM - Component Object Model

Dostęp do komponentów EJB przez usługi Web Services

Wzorce projektowe i refaktoryzacja

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

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Systemy Rozproszone Technologia ICE

Podejście obiektowe do budowy systemów rozproszonych

Wybrane działy Informatyki Stosowanej

Remote Method Invocation 17 listopada 2010

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ć

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

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

Wykład Ćwiczenia Laboratorium Projekt Seminarium

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

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

Zdalne wywołanie procedur. Krzysztof Banaś Systemy rozproszone 1

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

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

Zaawansowane narzędzia programowania rozproszonego

Programowanie komponentowe

Wybrane działy Informatyki Stosowanej

Wprowadzenie. Dariusz Wawrzyniak 1

Zaawansowane aplikacje internetowe. Wykład 6. Wprowadzenie do Web Services. wykład prowadzi: Maciej Zakrzewicz. Web Services

Relacyjne, a obiektowe bazy danych. Bazy rozproszone

Aplikacje RMI Lab4

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

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

Efektywność mechanizmów wywoływania procedur zdalnych

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

Systemy rozproszone. Dr inż. L. Miękina. Department of Robotics and Mechatronics AGH University of Science and Technology 1/1

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

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

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

RMI-2. Java Remote Method Invocation (RMI) na podstawie m.in. podręcznika firmy Sun Microsystems SYSTEMY ROZPROSZONE

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

Wzorce projektowe. dr inż. Marcin Pietroo

Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI

Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej. Wstęp. Programowanie w Javie 2. mgr inż.

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

Enterprise Java Beans wykład 7 i 8

Zaawansowane programowanie w C++ (PCP)

Programowanie obiektowe. Wprowadzenie

Analiza i projektowanie obiektowe 2016/2017. Wykład 11: Zaawansowane wzorce projektowe (1)

Serwery. Autorzy: Karol Czosnowski Mateusz Kaźmierczak

Wstęp Budowa Serwlety JSP Podsumowanie. Tomcat. Kotwasiński. 1 grudnia 2008

SOAP i alternatywy. 1. WSDL. 2. Protokoły tekstowe XML-RPC. JSON-RPC. SOAPjr. 3. Protokoły binarne Google Protocol Bufers. Apache Thrift.

Mechanizmy pracy równoległej. Jarosław Kuchta

Środowisko NetBeans. Paweł Boguszewski

Ustawienia Zabezpieczeń

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

PRiR I. Programowanie Równoległe i Rozproszone. Wykład 1 Wstęp i RMI. Marek Kasztelnik WSZIB Krakow

Michał Jankowski. Remoting w.net 2.0

Wprowadzenie do J2EE. Maciej Zakrzewicz.

Programowanie rozproszone w języku Java

Enterprise JavaBeans

XML-RPC: Zdalne wykonywanie procedur

Tworzenie i wykorzystanie usług

Tworzenie komponentów logiki biznesowej i warstwy dostępu do danych w oparciu o EJB3.0/JPA lub EJB 3.1/JPA2

Wykład 6 Dziedziczenie cd., pliki

Forum Client - Spring in Swing

Web Services. Bartłomiej Świercz. Łódź, 2 grudnia 2005 roku. Katedra Mikroelektroniki i Technik Informatycznych. Bartłomiej Świercz Web Services

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

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

Języki i paradygmaty programowania doc. dr inż. Tadeusz Jeleniewski

Tworzenie aplikacji rozproszonej w Sun RPC

Programowanie w języku Java. Wykład 13: Java Platform, Enterprise Edition (Java EE)

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

Wprowadzenie do programowania aplikacji mobilnych

Java Enterprise Edition spotkanie nr 1. Sprawy organizacyjne, wprowadzenie

mgr inż. Michał Paluch

Serwery aplikacji. mgr Radosław Matusik. Wydział Matematyki i Informatyki Uniwersytetu Łódzkiego radmat radmat@math.uni.lodz.

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

Usługi sieciowe (Web Services)

Programowanie współbieżne i rozproszone

Web Services. Wojciech Mazur. 17 marca Politechnika Wrocławska Wydział Informatyki i Zarządzania

EJB 3.0 (Enterprise JavaBeans 3.0)

Middleware wprowadzenie października 2010

Tworzenie i wykorzystanie usług sieciowych

Programowanie komponentowe 5

Wybrane problemy modelu usługowego

Middleware wprowadzenie października Dariusz Wawrzyniak (IIPP) 1

Programowanie obiektowe

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

Transkrypt:

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

Na początek - moja praca magisterska Narzędzie dla środowiska Eclipse wspierające stosowanie wzorców projektowych J2EE Prowdzący: dr Janusz Jabłonowski

Narzędzie do tworzenia IDE Mechanizm wtyczek (plug-ins) Otwarty kod źródłowy (GPL), otwarta architektura Wsparcie dla tworzenia nowych wtyczek Plug-in Development Environment (PDE) Java Development Tooling (JDT)

Wzorce projektowe Wzór dobrego i sprawdzonego rozwiązania pewnego problemu w pewnym kontekście Opisują często stosowane techniki projektowania aplikacji Oprócz projektowych istnieją wzorce dla analizy, kodownia i testowania Również wiele specyficznych wzorców np. dla systemów współbieżnych, sztucznej inteligencji, projektowania interfejsu użytkownika

Przykład wzorca: Compose Method

Przykład 2: Encapsulate Classes with Factory

Przykład 2: Encapsulate Classes with Factory Przed: klient ma dostęp do wielu klas z pakietu, Wszystkie mają wspólny interfejs

Przykład 2: Encapsulate Classes with Factory Przed: klient ma dostęp do wielu klas z pakietu, Wszystkie mają wspólny interfejs Po: Klient tworzy instancje przez fabrykę

Wzorce znane z Javy Przykładowe wzorce: Singleton, Iterator, Observer, Proxy, Facade, Adapter, Factory

Wzorce a refaktoryzacja Refaktoryzacja zmiana stuktury kodu bez zmiany zachowania Przykład: zmiana nazwy zmiennej, wyodrębnienie kodu do metody Niektóre proste refaktoryzacje są już zaimplementowane w Eclipse Popularne podejście to refaktoryzacja do wzorców projektowych

Przykład 2: Encapsulate Classes with Factory Przed: klient ma dostęp do wielu klas z pakietu, Wszystkie mają wspólny interfejs Po: Klient tworzy instancje przez fabrykę

Java 2 Enterprise Edition (J2EE) Część technologii Java Platforma do tworzenia wielowarstwowych, rozproszonych aplikacji dla przedsiębiorstw Standard przemysłowy Zawiera wiele technologii Enterprise Java Beans Java DataBase Connectivity Java Message Service Java Servlet Pages i wiele innych

Moja praca Wsparcie dla programisty J2EE piszącego w Eclipse Dwa podejścia automatyczna generacja kodu dla wybranego wzorca projektowego refaktoryzacja istniejącego kodu do wzorca projektowego

Dalsza część referatu Protokoly w technologii obiektow rozproszonych: CORBA, RMI/IIOP, DCOM, SOAP

Rozproszone obiekty "Dawno, dawno temu... był sobie samotny, nieszczęśliwy obiekt, który bardzo się nudził. Chciał połączyć się z innymi sprytniejszymi i bardziej skomplikowanymi obiektami, które pomogłyby mu wyrwać się z izolacji i nudnego życia na przeciążonej maszynie klienckiej źródło: www.microsoft.com :)

Rozproszone obiekty

CORBA - Common Object Request Broker Architecture CORBA - Standard zarządzany przez Object Management Group (OMG)

CORBA - Architektura Podstawowy paradygmat: żądanie usługi od zdalnego obiektu Usługi zdalnego obiektu definiowane przez interfejsy

CORBA Architektura IDL Interfejsy zdefiniowane w IDL Interface Definition Language Interfejs jest niezależny od języka programowania Stanowi tylko opis danych IDL umożliwia dziedziczenie interfejsów Obiekty zdalne są identyfikowane przez referencje, które mają typ interfejsu

CORBA Architektura ORB ORB usługa sieciowa, która lokalizuje zdalny obiekt przekazuje mu żądanie czeka na odpowiedź przekazuje odpowiedź klientowi ORB zapewnia przeźroczystość położenia zdalnego obiektu niezależność od języka programowania

CORBA - Usługi Zarządzanie: cyklem życia obiektu nazwami obiektów zdarzeniami transakcjami wyszukiwaniem obiektów powiązaniami między obiektami

CORBA Architektura IDL module StockObjects { struct Quote { string symbol; double price; }; exception Unknown{}; interface Stock { // Returns the current stock quote. Quote get_quote() raises(unknown); // Sets the current stock quote. void set_quote(in Quote stock_quote); readonly attribute string description; }; };

CORBA Architektura IDL module StockObjects { struct Quote { string symbol; double price; }; exception Unknown{}; interface Stock { // Returns the current stock quote. Quote get_quote() raises(unknown); // Sets the current stock quote. void set_quote(in Quote stock_quote); readonly attribute string description; }; };

CORBA Architektura IDL module StockObjects { struct Quote { string symbol; double price; }; exception Unknown{}; interface Stock { // Returns the current stock quote. Quote get_quote() raises(unknown); // Sets the current stock quote. void set_quote(in Quote stock_quote); readonly attribute string description; }; };

CORBA Architektura IDL module StockObjects { struct Quote { string symbol; double price; }; exception Unknown{}; interface Stock { // Returns the current stock quote. Quote get_quote() raises(unknown); // Sets the current stock quote. void set_quote(in Quote stock_quote); readonly attribute string description; }; };

CORBA Architektura IDL module StockObjects { struct Quote { string symbol; double price; }; exception Unknown{}; interface Stock { // Returns the current stock quote. Quote get_quote() raises(unknown); // Sets the current stock quote. void set_quote(in Quote stock_quote); readonly attribute string description; }; };

CORBA Architektura IDL module StockObjects { struct Quote { string symbol; double price; }; exception Unknown{}; interface Stock { // Returns the current stock quote. Quote get_quote() raises(unknown); // Sets the current stock quote. void set_quote(in Quote stock_quote); readonly attribute string description; }; };

CORBA Architektura IDL mapowanie na język programowania IDL Java C++ module package namespace interface interface abstract class operation method member function attribute pair of methods pair of functions exception exception exception

CORBA Architektura pośrednik i szkielet (stub and skeleton) Kompilator IDL generuje dla danego języka programowania stub reprezentuje lokalnie obiekt zdalny skeleton punkt wejścia do systemu rozproszonego konwertuje napływające dane, wywołuje metody i zwraca ponownie skonwertowane wyniki Implementacja obiektu zdalnego to zwykle obiekt dziedziczący po szkielecie zawierający implementacje metod z interfejsu IDL

CORBA Architektura pośrednik i szkielet (stub and skeleton)

CORBA Architektura pośrednik i szkielet (stub and skeleton)

CORBA tworzenie aplikacji 1.Specyfikacja interfejsu w IDL 2.Generacja pośrednika i szkieletu przez kompilator IDL 3.Implementacja klas obiektu zdalnego 4.Implementacja serwera do obsługi obiektu zdalnego 5.Kompilacja serwera i rejestracja go w ORB 6.Implementacja klienta 7.Kompilacja klienta i uruchomienie go

CORBA i IIOP

CORBA i IIOP

Internet Inter-ORB Protocol Założeniem CORBY jest współpraca aplikacji niezależne od ich położena w środowisku sieciowym W pierwszych wersjach CORBY były problemy ze współpracą między ORB'ami różnych producentów w różnych środowiskach Specyfikacja 2.0 CORBY w 1994, wprowadziła IIOP - Internet Inter-ORB Protocol

GIOP + TCP/IP = IIOP IIOP składa się z GIOP i warstwy transportowej GIOP - General Inter-ORB Protocol specyfikuje Common Data Representation (CDR) zawiera zbiór komunikatów dla wywołań CORBA zawiera generalne założenia na temat warstwy transportowej GIOP może działać z dowolnym protokołem warstwy transportowej np. TCP/IP, Novell SPX, SNA Aby zapewnić współpracę, IIOP korzysta z TCP/IP

IOR CORBA 2.0 Interoperable Object Reference (IOR) wspólny format referencji do obiektów wymienianych przez IIOP Format ten obejmuje adres internetowy serwera obsługującego obiekt i klucz służący od odnalezienia obiektu na tym serwerze

RMI/IIOP

RMI Remote Method Invocation rozszerza model obiektów żyjących w jednej maszynie wirtualnej do modelu rozproszonego programista może posługiwać się zdalnymi obiektami w taki sam sposób jak lokalnymi architektura RMI definiuje zachowanie obiektów, zarządzanie wyjątkami, pamięcią, przekazywaniem parametrów i wyników metod

RMI Lokalny interfejs i zdalna implementacja

RMI Mechanizm zdalnych wywołań

RMI Mechanizm zdalnych wywołań

Programowanie RMI Obiekt lokalny Zdefiniowany przez klasę Javy Jest implementowany przez swoją klasę Obiekt zdalny Definiuje swoje zachowanie przez interfejs, który roszerza interfejs Remote Jego metody są wykonywane przez klasę Javy, która rozszerza zdalny interfejs Nowa instancja jest tworzona operatorem new Nowa instancja jest tworzona na serwerze operatorem new. Klient nie może bezpośrednio stworzyć nowego zdalnego obiektu, chyba że używa Java 2 Remote Object Activation Dostępny bezpośrednio przez referencję Dostępny przez referencję, która wskazuje na pośrednika (stub), który implementuje zdalny W lokalnej maszynie wirtualnej referencja wskazuje bezpośrednio na obiekt na stercie Występują wyjątki wykonania (Runtime Exceptions) i wyjątki programu (Exceptions). Kompilator wymusza obsługę wyjątków programu interfejs Referencja wskazuje na pośrednika (stub) na lokalnej stercie. Pośrednik umie połączyć się ze zdalnym obiektem, który zawiera implementację zdalnych metod RMI wymusza obsługę zdalnych wyjątków (Remote Exceptions)

Protokoły w RMI Java Remote Method Protocol (JRMP) oparty na strumieniach bajtów korzysta z Java Object Serialization HTTP żądania POST przechodzi przez firewalle

RMI/IIOP CORBA: RMI:

RMI/IIOP RMI zamiast JRMP wykorzystuje IIOP W ten sposób można uzyskać dostęp do serwerów CORBA za pomocą API RMI Ciekawym zastosowaniem są Enterprise Java Beans (EJB), w których model zdalnego obiektu wykorzystuje RMI EJB można więc łatwo połączyć z innymi systemami przez CORBĘ, co daje ogromne możliwości integracji

Distributed Common Object Model technologia Microsoftu

COM COM - Common Object Model niezależny od platformy rozproszony system obiektowy Podstawa dla OLE (Object Linking and Embedding) ActiveX (Internet-enabled components) Przeznaczony dla języków Visual Basic C++

COM

DCOM

DCOM - Architektura

DCOM - Architektura Identyczna jak RMI Pośredniki (proxy i stub) Opakowywanie danych przesyłanych przez sieć (marshalling) Wywołanie metody = wywołanie RPC między proxy i stub Rozszerzenie MS-RPC o Object RPC (ORPC)

SOAP Simple Object Access Protocol

SOAP Simple Object Access Protocol Definiuje format wysyłania wiadomości oparty na XML Niezależny od platformy i języka Prosty i rozszerzalny Komunikaty przechodzą przez firewalle Standard W3C Kluczowy element platformy.net

SOAP przykładowa wiadomość <?xml version="1.0"?> <soap:envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingstyle="http://www.w3.org/2001/12/soap-encoding"> <soap:header>... </soap:header> <soap:body>... <soap:fault>... </soap:fault> </soap:body> </soap:envelope>

SOAP przykładowa wiadomość <?xml version="1.0"?> <soap:envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingstyle="http://www.w3.org/2001/12/soap-encoding"> <soap:header>... </soap:header> <soap:body>... <soap:fault>... </soap:fault> </soap:body> </soap:envelope>

SOAP przykładowa wiadomość <?xml version="1.0"?> <soap:envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingstyle="http://www.w3.org/2001/12/soap-encoding"> <soap:header>... </soap:header> <soap:body>... <soap:fault>... </soap:fault> </soap:body> </soap:envelope>

SOAP przykładowa wiadomość <?xml version="1.0"?> <soap:envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingstyle="http://www.w3.org/2001/12/soap-encoding"> <soap:header>... </soap:header> <soap:body>... <soap:fault>... </soap:fault> </soap:body> </soap:envelope>

SOAP przykładowe żądanie <?xml version="1.0"?> <soap:envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingstyle="http://www.w3.org/2001/12/soapencoding"> <soap:body> <m:getprice xmlns:m="http://www.w3schools.com/prices"> <m:item>apples</m:item> </m:getprice> </soap:body> </soap:envelope>

SOAP przykładowa odpowiedź <?xml version="1.0"?> <soap:envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingstyle="http://www.w3.org/2001/12/soapencoding"> <soap:body> <m:getpriceresponse xmlns:m="http://www.w3schools.com/prices"> <m:price>1.90</m:price> </m:getpriceresponse> </soap:body> </soap:envelope>

SOAP stosowane protokoły SOAP używa HTTP na TCP/IP Korzysta z żądań GET lub POST do przesyłania wiadomości

Literatura Specyfikacja CORBA http://www.omg.org/ RMI/IIOP http://java.sun.com/j2se/1.4.2/docs/guide/rmi-iiop/ EJB/CORBA www.iona.com/whitepapers/corba-ejbinteropwpv02-00.pdf DCOM http://www.microsoft.com/com/ SOAP http://www.w3.org/tr/soap/