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



Podobne dokumenty
Zaawansowane aplikacje internetowe - laboratorium Architektura CORBA.

Zaawansowane aplikacje internetowe CORBA. wykład prowadzi Mikołaj Morzy CORBA

Zaawansowane aplikacje internetowe - laboratorium Architektura CORBA.

Programowanie współbieżne i rozproszone

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

Wprowadzenie CORBA ORB

Wywoływanie metod zdalnych

Wywoływanie metod zdalnych

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Podejście obiektowe do budowy systemów rozproszonych

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

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ć

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

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

Programowanie obiektowe

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

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

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

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Tworzenie i wykorzystanie usług

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

Aplikacje RMI

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

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Systemy Rozproszone - Ćwiczenie 6

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Programowanie obiektowe

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

Budowa aplikacji w technologii. Enterprise JavaBeans. Maciej Zakrzewicz PLOUG

Aplikacje RMI Lab4

Języki i metody programowania Java. Wykład 2 (część 2)

Wykład 4: Klasy i Metody

Programowanie obiektowe

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

Java. Programowanie Obiektowe Mateusz Cicheński

Standard CORBA. Oprogramowanie systemów równoległych i rozproszonych Wykład 8. Zalety (I) Model komunikacji. Dr inż. Tomasz Olas

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Tworzenie aplikacji rozproszonej w Sun RPC

KLASY, INTERFEJSY, ITP

Aplikacje RMI. Budowa aplikacji rozproszonych. Część 2.

Enkapsulacja, dziedziczenie, polimorfizm

Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1.

1. Czynności przygotowujące aplikację działającą na platformie Java SE Biblioteka5 (należy ją pobrać z załącznika z p.1)

1 Atrybuty i metody klasowe

Programowanie obiektowe

Proxy (pełnomocnik) Cel: Zastosowanie: Dostarczyć zamiennik pewnego obiektu, pozwalający kontrolować dostęp do niego.

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

Polimorfizm. dr Jarosław Skaruz

Wykład 7: Pakiety i Interfejsy

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

Programowanie obiektowe

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Common Object Request Broker Architecture (CORBA)

Języki i metody programowania Java INF302W Wykład 2 (część 1)

Komponenty sterowane komunikatami

1 Wprowadzenie do J2EE

Programowanie w Internecie. Java

Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Programowanie obiektowe

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

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

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

Podejście obiektowe. Tablice obiektów Przykład 1 metody i atrybuty statyczne oraz niestatyczne

Klasy abstrakcyjne, interfejsy i polimorfizm

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

Ustawienia Zabezpieczeń

SOAP. Autor: Piotr Sobczak

Server-Side C++ Mapping

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1

Tworzenie aplikacji w języku Java

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019

Wprowadzenie. Dariusz Wawrzyniak 1

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7

Programowanie obiektowe

Systemy Rozproszone Technologia ICE

Język JAVA podstawy. Wykład 4, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

PODEJŚCIE OBIEKTOWE. Przykład 1 metody i atrybuty statyczne

Programowanie obiektowe i zdarzeniowe

Obiektowe programowanie rozproszone specyfikacja CORBA. Krzysztof Banaś Systemy rozproszone 1

Metody Metody, parametry, zwracanie wartości

public - może być używana w kodzie poza klasą, jedna klasa ModyfikatorKlasy może być kombinacją wyrażeń:

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Java: interfejsy i klasy wewnętrzne

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

Programowanie obiektowe

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Programowanie rozproszone w języku Java

dziedziczenie - po nazwie klasy wystąpią słowa: extends nazwa_superklasy

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz

Wykład 6 Dziedziczenie cd., pliki

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

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

Języki i paradygmaty programowania Wykład 2. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18

Transkrypt:

Plan wykładu CORBA Wprowadzenie Architektura CORBA IDL język definicji interfejsów ORB Object Request Broker Usługi i POA Aplikacje CORBA tworzenie serwera tworzenie klienta Aplikacje rozproszone Cechy aplikacji rozproszonych Rozproszenie danych Rozproszenie obliczeń Rozproszenie użytkowników System lokalny System rozproszony Komunikacja szybka wolna Awarie obiekty ulegają awarii wszystkie na raz obiekty ulegają awarii niezależnie, możliwy podział sieci Współbieżny dostęp wielowątkowo tak Bezpieczeństwo wysokie niskie serwer A serwer B

Co to jest CORBA Common Object Request Broker Architecture architektura obiektowych systemów rozproszonych umożliwiająca współpracę między heterogenicznymi, rozproszonymi kolekcjami obiektów Paradygmat: żądanie usługi od zdalnego obiektu OMG i historia standardu Object Management Group Konsorcjum 800 firm informatycznych Standardy: OMA, CORBA, UML, XMI, MDA Historia standardu CORBA CORBA 1.0, grudzień 1990 CORBA 1.1, 1.2 (wprowadzenie IDL), grudzień 1993 CORBA 2.0 (wprowadzenie IIOP), grudzień 1994 CORBA 2.1, 2.2,, 2.6, grudzień 2001 CORBA 3.0, lipiec 2003 Architektura CORBA Cechy architektury CORBA Model pojęciowy OMA Język IDL (abstrakcyjny język obiektowy) Wiązania do wielu języków programowania Automatyczne generowanie kodu pieńków i szkieletów Transparentność lokalizacji obiektów i usług Wspólne usługi i udogodnienia CORBA Wspólne usługi i udogodnienia CORBA Niezależność od sprzedawców

CORBA a RPC, Web Services Podobieństwa Zdalne wywoływanie metod Niezależność od języka implementacji Różnice Abstrakcyjny język obiektowy (IDL) Pełna definicja protokołów i zachowania Wiązania do wielu języków programowania Udogodnienia do zarządzania obiektami Standardowe usługi Duży narzut na zasoby (szybkość, pamięć) IDL wprowadzenie Cechy IDL Deklaratywny język definicji interfejsów Niezależność od języka implementacji Składnia podobna do C++ Brak odniesień do implementacji operacji Pojęcia Moduł: zbiór interfejsów (pakiet, przestrzeń nazw) Interfejs: specyfikacja cech i operacji obiektu (klasa) Atrybut: cecha obiektu (składowa) Operacja: opis zachowania się obiektu Wyjątek: opis nietypowej sytuacji IDL przykład IDL odwzorowania językowe messagebox.idl module MessageModule { typedef sequence<string> MessageSeq; interface MessageBox { exception boxfull { attribute string reply; string leavemessage(in string msg) raises (boxfull); MessageSeq getmessages(); OMG IDL Java C++ short, long, double short, int, long short, long, double any org.omg.corba.any any class string, wstring java.lang.string char*, wchar_t* sequence array class typedef helper class typedef interface class class exception class class module package namespace

Object Request Broker wprowadzenie ORB - usługodawcy ORB centralna szyna komunikacji Najważniejsza cecha ORB przezroczystość Lokalizacja obiektu Implementacja obiektu Stan działania obiektu Komunikacja między obiektami Zarządzanie referencjami do obiektów Nieczytelne, niemodyfikowalne, nieusuwalne Pozyskiwanie referencji tworzenie obiektu usługi katalogowe serializacja referencji do pliku lub bazy danych Usługodawca: konkretna implementacja operacji obiektu CORBA wyspecyfikowanych w deskryptorze IDL Wiele referencji odwzorowywanych na usługodawcę Jedna referencja odwzorowywana na wielu usługodawców Obiekt może nie mieć aktywnych usługodawców Obiekt może wcale nie mieć usługodawców ORB lista dostępnych implementacji IIOP.NET, http://iiop-net.sourceforge.net/ JacORB, http://www.jacorb.org/ Java IDL, http://java.sun.com/products/jdk/idl/ MICO is CORBA, http://www.mico.org/ omniorb, http://omniorb.sourceforge.net/ OpenORB, http://openorb.sourceforge.net/ TheAceORB, http://www.cs.wustl.edu/~schmidt/tao.html VisiBroker, http://www.borland.com/us/products/visibroker Life Cycle Service Persistence Service Naming Service Event Service Concurrency Control Service Transaction Service Relationship Service Relationship Service Query Service Properties Service Time Service Usługi CORBA

POA Portable Object Adapter Definicja i prekompilacja interfejsu Odpowiedzialność adaptera obiektów Generowanie i interpretacja referencji do obiektów Wywoływanie metod Bezpieczeństwo interakcji między obiektami Aktywacja i dezaktywacja obiektów Rejestrowanie implementacji interfejsów messagebox.idl module MessageModule { typedef sequence<string> MessageSeq; interface MessageBox { exception boxfull { attribute string reply; string leavemessage(in string msg) raises (boxfull); MessageSeq getmessages(); C:\> idlj.exe fserver messagebox.idl 1 C:\> orbd.exe ORBInitialPort 1050 2 Automatycznie generowane pliki [dir] MessageModule MessageBox.java MessageBoxOperations.java MessageBoxPOA.java MessageSeqHelper.java MessageSeqHolder.java [dir] MessageBoxPackage boxfull.java boxfullhelper.java boxfullholder.java Przygotowanie usługi 1/2 public class MessageBoxImpl extends MessageBoxPOA { public MessageBoxImpl(String name, int max) { protected String reply; protected int max; protected Vector messages; private ORB orb; MessageBoxImpl.java składowe klasy usługi lokalny broker public String leavemessage(string msg) throws MessageModule.MessageBoxPackage.boxFull { if (messages.size() > max) throw new MessageModule.MessageBoxPackage.boxFull(); messages.addelement(msg); return reply(); implementacja usługi

Przygotowanie usługi 2/2 Przygotowanie serwera 1/2 public void setorb(orb orb) { this.orb = orb; public void reply(string reply) { this.reply = reply; public String reply() { return this.reply; public String[] getmessages() { String[] _messages = new String[messages.size()]; messages.copyinto(_messages); messages = new Vector(max); return _messages; MessageBoxImpl.java MessageServer.java public static void main(string[] args) { try { Properties props = new java.util.properties(); props.put("org.omg.corba.orbinitialport", "1050"); props.put("org.omg.corba.orbinitialhost", "localhost"); połączenie z brokerem ORB orb = ORB.init(args,props); POA rootpoa = POAHelper.narrow(orb.resolve_initial_references("RootPOA")); rootpoa.the_poamanager().activate(); Przygotowanie serwera 2/2 Przygotowanie klienta 1/3 MessageServer.java MessageBoxImpl messageboximpl = new MessageBoxImpl("myMessages",5); messageboximpl.setorb(orb); org.omg.corba.object ref = rootpoa.servant_to_reference(messageboximpl); MessageBox box = MessageBoxHelper.narrow(ref); org.omg.corba.object objref = orb.resolve_initial_references("nameservice"); NamingContextExt ncref = NamingContextExtHelper.narrow(objRef); C:\> idlj.exe fclient messagebox.idl [dir] MessageModule MessageBoxHelper.java MessageBoxHolder.java _MessageBoxStub.java NameComponent path[] = ncref.to_name("messageserver"); ncref.rebind(path, box); orb.run();

Przygotowanie klienta 2/3 MessageClient.java public static void main(string[] args) { try { Properties props = new java.util.properties(); props.put("org.omg.corba.orbinitialport", "1050"); props.put("org.omg.corba.orbinitialhost", "localhost"); org.omg.corba.orb orb = org.omg.corba.orb.init(args, props); org.omg.corba.object objref = orb.resolve_initial_references("nameservice"); NamingContext ncref = NamingContextHelper.narrow(objRef); usługa nazewnicza NameComponent nc = new NameComponent("MessageServer", ""); NameComponent path[] = { nc MessageBox box = MessageBoxHelper.narrow(ncRef.resolve(path)); Przygotowanie klienta 3/3 if (action.equals("reply")) { box.reply(param); else if (action.equals("leave")) { try { System.out.println(box.leaveMessage(param)); catch (MessageModule.MessageBoxPackage.boxFull e) { e.printstacktrace(); else if (action.equals("get")) { String[] messages = box.getmessages(); for (int i = 0; i < messages.length; i++) System.out.println(" " + messages[i]); MessageClient.java znalezienie usługi MessageServer Materiały dodatkowe CORBA Faq, www.omg.org/gettingstarted/corbafaq.htm Object Managemet Group, http://www.omg.org "Java Programming with CORBA", G.Brose, A.Vogel, K.Duddy, Wiley Computer Publishing, 2001 Introduction to CORBA, http://java.sun.com/developer/onlinetraining/corba/