CORBA. Mi a CORBA? A CORBA felépítése

Hasonló dokumentumok
Komponens modellek. 3. Előadás (első fele)

CO C R O B R A B OMG, ORB, CORBA

CORBA bevezetés. Paller Gábor Internet és mobil rendszerek menedzselése

CORBA Áttekintés. Mi a CORBA? OMG and OMA. Ficsor Lajos. Miskolci Egyetem Általános Informatikai Tanszék

A Java nyelv. V. rész Az objektumorientáltság magasabb fokú tulajdonságai: Perszisztencia, CORBA, RMI

Kommunikáció. Távoli eljáráshívás. RPC kommunikáció menete DCE RPC (1) RPC - paraméterátadás. 3. előadás Protokollok. 2. rész

Osztott alkalmazások fejlesztési technológiái Áttekintés

DCOM Áttekintés. Miskolci Egyetem Általános Informatikai Tanszék. Ficsor Lajos DCOM /1

A SZOFTVERTECHNOLÓGIA ALAPJAI

Interfészek. PPT 2007/2008 tavasz.

OOP #14 (referencia-elv)

Már megismert fogalmak áttekintése

Osztott Objektumarchitektúrák

Kommunikáció. Folyamatok közötti kommunikáció. Minden elosztott rendszer alapja

Kommunikáció. 3. előadás

Tartalom. Történeti áttekintés. Történeti áttekintés Architektúra DCOM vs CORBA. Szoftvertechnológia

Elosztott rendszerek: Alapelvek és paradigmák Distributed Systems: Principles and Paradigms

Serialization. RMI működése

Tartalom DCOM. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés

Interfészek. Programozás II. előadás. Szénási Sándor.

Bevezetés a Java programozási nyelvbe

A Java EE 5 plattform

Bevezetés a Java programozási nyelvbe

OOP és UML Áttekintés

Enterprise JavaBeans. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem. Az Enterprise JavaBeans

CORBA-alapú elosztott alkalmazások. /Java és CORBA/

és az instanceof operátor

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Osztott rendszerek. Krizsán Zoltán 1 Ficsór Lajos 1. Webalkalmazások fejlesztése tananyag. Miskolci Egyetem. Bevezetés A múlt - történelem A jelen

Szoftver labor III. Tematika. Gyakorlatok. Dr. Csébfalvi Balázs

Enterprise JavaBeans 1.4 platform (EJB 2.0)

A J2EE fejlesztési si platform (application. model) 1.4 platform. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor.

A JGrid rendszer biztonsági architektúrája. Magyaródi Márk Juhász Zoltán Veszprémi Egyetem

Autóipari beágyazott rendszerek. Komponens és rendszer integráció

Java I. A Java programozási nyelv

Programozás módszertan p.1/46

Programfejlesztési Modellek

Osztott rendszerek (Distributed. systems) Bevezetés. Tartalom. Ficsor Lajos. Miskolci Egyetem Általános Informatikai Tanszék

Nyílt forráskódú irodai programkomponensek vállalati környezetbe való integrációjának vizsgálata és implementációja

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

Osztott rendszerek (Distributed

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

ELTE SAP Excellence Center Oktatóanyag 1

Web-fejlesztés NGM_IN002_1

Windows rendszeradminisztráció és Microsoft szerveralkalmazások támogatása. 3. óra. Kocsis Gergely, Kelenföldi Szilárd

COMET webalkalmazás fejlesztés. Tóth Ádám Jasmin Media Group

SOA modell: Ez az interfész definiálja az elérhető adatokat, és megadja, hogy hogyan lehet azokhoz hozzáférni.

Komponens alapú fejlesztés

Programozási nyelvek Java

Bánsághi Anna 2014 Bánsághi Anna 1 of 31

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

A szemantikus elemzés helye. A szemantikus elemzés feladatai. A szemantikus elemzés feladatai. Deklarációk és láthatósági szabályok

Book Template Title. Author Last Name, Author First Name

Az iskolai rendszerű képzésben az összefüggő szakmai gyakorlat időtartama. 10. évfolyam Adatbázis- és szoftverfejlesztés gyakorlat 50 óra

Konkurens TCP Szerver

Java RMI Áttekintés. A Java RMI. A Java RMI architektúrája. Ficsor Lajos. Általános Infromatikai Tanszék Miskolci Egyetem 1.

Programozás III KIINDULÁS. Különböző sportoló típusok vannak: futó, magasugró, focista, akik teljesítményét más-más módon határozzuk meg.

R I Szer e i r alizáció.

Java programozási nyelv 5. rész Osztályok III.

Komponens alapú programozás Bevezetés

Folyamatmodellezés és eszközei. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Segédanyag: Java alkalmazások gyakorlat

Bevezető. Servlet alapgondolatok

JAVA webes alkalmazások

Iman 3.0 szoftverdokumentáció

Operációs rendszerek. Windows NT. A Windows NT

Abstract osztályok és interface-ek. 7-dik gyakorlat

Folyamatok. 6. előadás

Grafikus keretrendszer komponensalapú webalkalmazások fejlesztéséhez

Programozási nyelvek Java

OOP. Alapelvek Elek Tibor

S01-7 Komponens alapú szoftverfejlesztés 1

Adatbázis Rendszerek II. 1. SQL programozási felületek 39/1B IT MAN

iphone és Android két jó barát...

Objektumorientált paradigma és programfejlesztés Bevezető

A TANTÁRGY ADATLAPJA

Komponensek együttműködése web-alkalmazás környezetben. Jónás Richárd Debreceni Egyetem T-Soft Mérnökiroda KFT

Objektum orientáltság alapjai A Java nyelv Fordítás - futtatás

S04-2 Elosztott alkalmazások készítése

A webhelyhez kötődő szoftverek architektúrája

Szoftver Tervezési Dokumentáció. Nguyen Thai Binh

Szoftver-technológia II. Szoftver újrafelhasználás. (Software reuse) Irodalom

Java I. A Java programozási nyelv

Visual C++ osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés.

Előzmények

Adatbázis és szoftverfejlesztés elmélet

Bevezetés, a C++ osztályok. Pere László

Java RMI Áttekintés. Miskolci Egyetem Általános Informatikai Tanszék. Utolsó módosítás: Ficsor Lajos. javarmi / 1

ELTE SAP EXCELLENCE CENTER Oktatóanyag. Sas László: ABAP Objects Objektumorientált ABAP

eseményvezérelt megoldások Vizuális programozás 5. előadás

Programozási technológia

Szoftvertechnológia alapjai Java előadások

Párhuzamos és Elosztott Rendszerek II

Bevezetés a Python programozási nyelvbe

Az alábbi kód egy JSON objektumot definiál, amiből az adtokat JavaScript segítségével a weboldal tartalmába ágyazzuk.

OpenCL alapú eszközök verifikációja és validációja a gyakorlatban

Bevezetés a programozásba II. 8. Előadás: Osztályok, objektumok, osztályszintű metódusok

ERLANG PROGRAMOK TRANSZFORMÁCI CIÓJA ERLANG

Átírás:

Mi a CORBA? CORBA A programok által használt objektumok nem szükségképpen korlátozódnak az operációs rendszer által a programok számára kijelölt memóriaterületre - a program címzési tartományára. Általánosabb esetben az objektumok függetlenné válnak az őket létrehozó programoktól, és önálló - perszisztens módon léteznek. Az ilyen objektumokat szétteríthetjük egy számítógéphálózat különböző elemei között úgy, hogy az elosztott objektumok - programkomponensek - valós fizikai elhelyezkedésüktől függetlenül képesek legyenek az együttműködésre. Ennek a komponens elvnek egyik legismertebb megvalósítása a CORBA. A CORBA (Common Object Request Broker Architecture) a jelenleg több m 800 tagú, a számítástechnika minden ágát magába foglaló konzorcium, az OMG (Object Management Group) terméke. CORBA segítségével olyan szoftver- komponenseket definiálhatunk, amelyek különböző hálózati pontokon, eltérő operá- ciós rendszerek felett, esetleg más-más programnyelvben implementálva egy közös protokollon keresztül képesek az együttműködésre. Az OMG csoporthoz nem tartozó egyetlen jelentős számítástechnikai cég a Microsoft, amely hasonló elvű saját termékkel rendelkezik DCOM Distri- buted Component Object Model - néven. A Microsoft a COM technológiát fejleszti tovább a Windows 2000-ben COM+ néven, valójában a két technológia szolgáltatásai (bár nem eszközrendszere) egyre jobban közelítenek egymáshoz. A CORBA felépítése A CORBA,,szíve'' az ORB (Object Request Broker) felelős az objektumok közötti kapcsolat létrehozásáért és fenntartásáért. Fontos szerepe, hogy elfedje a különböző címtartományok (programok) közötti kommunikációt. 1

Az ORB felett az objektumok úgy létesí- tenek egymással kapcsolatot, mha mindannyian egyetlen programban, egyetlen címtartományban léteznének. Az ORB feladata a köztes - gyakran igen összetett - kommunikáció megvalósítása, többek között a távoli objektum hálózati helyének megtalálása, az objektumot implementáló folyamat elindítása, a haté- kony adatcsere, stb. A kliensoldalon Az z ORB több összetevőt tartalmaz a kliens és a szerveroldalon A kliens Interface Definition Language (IDL) kapcsolódási csonk (Client IDL Stubs) biztosítja a kliensoldal statikus felületét a CORBA objektumok eléréséhez. A dinamikus hívási felület (Dynamic Invocation Interface, DII) segítségével olyan dinamikus programokat írhatunk, amelyek futás alatt derítik fel a szerveroldali objektumok metódusait, és képesek meghívni is azokat. Az erfész-szótár szótár programozói felület (Interface Reposítory API) futási idejű hozzáférést enged az előbb említett adatokhoz, az erfész-szótárhoz. szótárhoz. 2

A szerveroldalon Az ORB felület (ORB erface) néhány hasznos helyi szolgáltatást nyújt a CORBA programozóknak. pl. objektumhivatkozások karakterlánccá és visszakonvertálása, ami az objektumok kapcsolatainak tárolásához előnyös. A szerver IDL kapcsolódás: felület (Server IDL Stub,, váz, skeleton) a szerverobjektumok által nyújtott statikus szolgáltatásokat definiálja. A kliensoldali csonkhoz hasonlóan a vázat (szkeletont) is az IDL fordító generálja. A dinamikus kapcsolódási felületet (Dynamic Skeleton Interface,, DSI), a kliensoldali dinamikus hívási felület (DII) párja: futási időben képes csatlakozási információt szolgáltatni azokról az elérhető szerveroldali objektumokról, amelyek nem rendelkeznek IDL definiált statikus csonkkal. Az objektumadapter (Object Adapter) a fenti két felület implementációjához szükséges, de önállóan is használható. Itt helyezkedik el az objektumok létrehozásához, metódusaik hívásához szükséges futási környezet. Az implementációs szótár (Implemen- tation, Repository) a megvalósított szerveroldali osztályok leírását tartalmazza, valam információt arról, mely objektumokat példányosították és hogyan lehet azonosítani azokat. Az ORB felület, amely a szerveroldalról is elérhető, megfelel a kliensoldalinak. 3

Az Interface Definition Language (IDL) A CORBA erősen objektumorientált szemléletű rendszer. Ennek megfelelően az egyes szoftver- komponenseket osztályokként definiáljuk, és használhatunk olyan általánosan elterjedt technikákat, m az öröklődés vagy a kivételkezelés. Az egyik legfontosabb objektumorientált jellemzőnek, az adatelrejtésnek (encapsulation) kiemelt szerepe van: az objektumok közötti kapcsolattartás csak az osztályok jól definiált felületén - erfészén - keresztül lehetséges. Az osztályok definiálására az IDL, az Interface Definition Language nyelvet használjuk. Az IDL hordozható, programozási nyelvtől, operációs rendszertől független nyelv. Nem azonos a C++-szal szal, bár szin- taxisának gyökerei oda vezethetőek vissza. Egy IDL program vázlatosan akövetkező: Az IDL deklaratív nyelv, azaz támogatja típusok, konstansok, adatelemek, metó- dusok,, kivételek deklarációját, de nem tartalmaz procedúrális elemeket, azaz nem foglalkozik azzal, hogy a definiált eljárásokat hogyan kell implementálni. Az IDL nyelven deklarált osztályokat ké- sőbb konkrétan megvalositjuk Java-ban. Ez két lépésben történik: az IDL nyelven leírt erfészekből az IDL-fordító készít konkrét Java nyelvű kódot, amelyet ki kell egészítenünk a metódusok - szén konkrét nyelvi - megvalósításával. module = <azonosító< azonosító> { <típusdeklarációk>; <konstandeklarációk>; <kivételdeklarációk>; erface <azonosító> [ : öröklődés] { <típusdeklarációk>; <konstandeklarációk>; <kivételdeklarációk>; <attribútumdeklarációk> [<mód>] <azonosító> (<paraméterek>) [raise <kivétel>] [kontextus]; } } 4

Az IDL-Java leképezés Habár az IDL nyelv szaxisa a C++ -hoz áll közelebb, a mögöttes elvek a Java által kitűzött célokhoz szorosabban kötődnek. Ennek megfelelően az IDL alaptípusainak és típuskonstrukcióinak leképezése a Java nyelvre viszonylag egyszerű. IDL alaptípus,w unsigned Int Megfelelő Java típus IDL típus unsigned unsigned unsigned IDL paramétertípusok Java nyelvi leképezése in inout out visszatérő érték unsigned unsigned FloatHolder DoubleHolder BooieanHolder FIoatHolder DoubleHolder BooieanHolder octet string,wstring byte java.lang.string octet any enum referencia struct union string byte Object Ref String CharHolder ByteHolder típusholder StringHolder CharHolder ByteHolder típusholder StringHolder byte ObjectRef String sequence A CORBA további lehetőségei Az objektumorientált eszközök közül használhatjuk a többszörös öröklődést (még akkor is, ha maga a Java nyelv ezt csak erfészek között valósítja meg), és a kivételkezelést. A szerveroldali szolgáltatásaink válthatnak ki kivételeket, melyeket a kliens kezel le. A kiváltott kivételek a Java nyelvhez hasonlóan képesek információ továbbítására, és pontosan a megfelelő helyen lehet lekezelni azokat. Az IDL-Java fordító IDL erfészforrást olvas és Java kódot hoz létre. Az IDL erfész-ből létrehozott Java er- fész mellett generálásra kerülnek a cson- kok,, vázak (szkeletonok), és egyéb állo- mányok is. Az IDL-Java fordítókat az egyes ORB gyártók biztosítják termékeikhez. Nemcsak lehetséges, de a CORBA alkal- mazásának egyik legígéretesebb módja, ha az objektumaink egy része a szerverről letöltött appletben helyezkedik el. Ilyenkor az applet a szerverrel metódushívásokon keresztül kommunikál, és egyszerre ak- názza ki az applet technika és az objek- tumorientált programozás valamennyi előnyét. 5

A kliens-szerver szerver rendszerek előtt teljesen új lehetősége- ket nyit meg a szerver vissza-hívási technika (callback( callback), amire ugyancsak lehetőséget ad a CORBA. A hagyomá- nyos kliens-szerver szerver elképzelés szer mindig a kliens a kezdeményező, aki aktivizál valamilyen szerver folya- matot.. Ha a kliens nem fordul a szerverhez, az nem ké- pes információt szolgáltatni. A visszahívási technika lehetőséget ad arra, hogy a (klienssel párhuzamosan futó) szerverfolyamat legyen a kezdeményező, és az hívja meg a kliens egy metódusát. (Ez a metódus Java kliens esetében legtöbbször egy külön szálon belül van implementálva.) Legfőképpen azonban nem csak statikusan - előre definiált műveletekkel - kommunikálhatunk a CORBA objektumok között, hanem használ- hatjuk a dinamikus hívási felületet (Dynamic Invocation Interface,, DII] is. A DII segítségével a kliens képes futási időben kiválasztani azokat a szerveroldali objektumokat és metódusokat, amelyekkel együtt kíván működni. Ez azt jelenti, hogy a kliens fordítási idő helyett futási időben is képes az IDL erfészt lekérdezni, metódusok között válogatni, egy kiválasztott metódus leírá- sát megszerezni, majd a metódust meghívni. 6