Elosztott objektumok használata
description
Transcript of Elosztott objektumok használata
![Page 1: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/1.jpg)
Elosztott objektumok használata
Tihanyi Sándor1999. december
![Page 2: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/2.jpg)
1999. december Tihanyi Sándor 2
Tartalom
• CORBA szabvány
• CORBA részei– komponensek
• Objektumok elérése – Naming Service használata
• CORBA termékek, példák
![Page 3: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/3.jpg)
1999. december Tihanyi Sándor 3
Mi is az a CORBA?
• Elosztott számítógépes alkalmazások– korábban csak UNIX világban
• RPC, socket programozás (rugalmatlan, nehezen átlátható kód)
– Új gondolat: általános keretrendszer• szabványos
• objektum-orientált
• rendszerfüggetlen
• programozási nyelvtől független
![Page 4: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/4.jpg)
1999. december Tihanyi Sándor 4
Történeti áttekintés
• Object Management Group (OMG)– keretrendszer kidolgozása (1989-től)– http://www.omg.org
• Object Management Architecture (OMA)– az OMG által szabványosított architektúra– legalacsonyabb szintje a CORBA
• Common Object Request Broker Architechture (CORBA)– 2.0-ás változat 1995-ben– 3.0-s változat folyamatban
![Page 5: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/5.jpg)
1999. december Tihanyi Sándor 5
Az általános keretrendszer
– Szabványos:• Object Management Architecture az OMG-től
– Objektum-orientált• CORBA-objektumok megfeleltethetők a nyelvi
objektumoknak
– Rendszerfüggetlen:• a szabvány megfogalmazza a megkívánt funkciókat
– Programozási nyelvtől független:• az IDL (Interface Definition Language) biztosítja
![Page 6: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/6.jpg)
1999. december Tihanyi Sándor 6
Object Management Architecture
• CORBA-objektumok és alkalmazás-objektumok
• Object Request Brokers (ORBs)• csatorna az objektumok eléréséhez
• CORBAservices• szolgáltatások az objektumok kezeléséhez
• CORBAfacilities• szolgáltatások az alkalmazásnak
![Page 7: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/7.jpg)
1999. december Tihanyi Sándor 7
CORBA 2.0 ORB struktúra
Dynamic Invocation Interface
ClientIDLStub
ORBInterface
ORBInterface
StaticIDL
Skeleton
Dynamic Skeleton Interface
ObjectAdapter
InterfaceRepository
Implem.Repository
Client Object Impl.
ORB Core
![Page 8: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/8.jpg)
1999. december Tihanyi Sándor 8
Object Adapter
• CORBA 2.0-ban a Basic Object Adaptert (BOA) definiálták– alap funkcionalitás– nagy szabadságfok a gyártóknak
• ez a hordozhatóságot és az együttműködés rovására megy
• CORBA 3.0-ban: Portable Object Adapter– nem a BOA javítása, hanem teljesen új– még kidolgozás alatt
![Page 9: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/9.jpg)
1999. december Tihanyi Sándor 9
CORBA komponensek
• Kliens oldal (objektum felhasználó rész)• Szerver oldal (objektumot implementáló rész)
– Más összefüggésben lehet kliens is
• Bármelyik komponens bármilyen nyelven implementálható
• Transzparens hálózati kommunikáció az ORB-n keresztül
![Page 10: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/10.jpg)
1999. december Tihanyi Sándor 10
CORBA komponensek
C
IDL
Kliens
C++
IDL
Java
IDL
Smalltalk
IDL
Egyéb
IDL
C
IDL
Szerver
C++
IDL
Java
IDL
Smalltalk
IDL
Egyéb
IDL
ORB
![Page 11: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/11.jpg)
1999. december Tihanyi Sándor 11
A rendszer működése
• Kliens hozzáférése az objektumokhoz• proxyn keresztül
• Proxy feladata• kérés továbbítása a szerver oldali objektum-
implementáció felé
• visszatérő érték visszaadása
![Page 12: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/12.jpg)
1999. december Tihanyi Sándor 12
Távoli objektum használata
2. gép
Szerver
1. gép
Kliens Proxy
Függvényhívás
Visszatérő értékvisszaadása
Függvényhívástovábbítása
Visszatérő értékvisszaadása
Valódiobjektum
![Page 13: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/13.jpg)
1999. december Tihanyi Sándor 13
Kapcsolat az ORB-k között
Client
Stub
Object
Skel
Object
Skel
Client
Stub
ORB 1 ORB 2
Inter-ORB protocols
![Page 14: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/14.jpg)
1999. december Tihanyi Sándor 14
CORBA 2.0 Inter-ORB architektúra
CORBA IDL
General Inter-ORB Protocol (GIOP)
Internet Inter-ORB Protocol (IIOP)TCP/IP felett
mások
OSI, IPX/SPX
Enviroment Specific Inter-ORB Protocols (ESIOP)DCE/ESIOP
DCE RPCTCP/IP felett
DCE RCPOSI felett
Internet
......
Tra
nszp
ort
Átv
itel
i és
üzen
etsz
inta
ktik
a
Obj
ektu
mké
rés
szem
anti
kája
CORBA 2.0-ban szerepel Opcionális
![Page 15: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/15.jpg)
1999. december Tihanyi Sándor 15
Statikus hozzárendelés
• A kliens az adott referencia alapján elkészíti a proxyt
• A szerver oldalon is statikus az implementáció és az ORB kapcsolata
Client
Stub
Object
Skel
ORB
![Page 16: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/16.jpg)
1999. december Tihanyi Sándor 16
Dinamikus hozzárendelés
• A felhasználó beilleszthet a kliens-programjába újabb elemeket~ www-böngésző plugin– keresés pl. objektum böngésző segítségével
• Szerver oldalon: – implementáció példányosítása igény szerint
![Page 17: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/17.jpg)
1999. december Tihanyi Sándor 17
CORBAservices (5/1)
• Lifecycle Service:– objektumok létrehozása, törlése, másolása, mozgatása
• Relationship Service:– objektumok közti kapcsolatokat írja le
– típusok, szerepek, a kapcsolat számossága, szemantikája
• Persistent Object Service, Externalization Service:– interfész, protokoll definíció az objektumok
elmentéséhez és visszaállításához
![Page 18: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/18.jpg)
1999. december Tihanyi Sándor 18
CORBAservices (5/2)
• Event Service:– az események megfelelő helyekre eljuttatása
• Object Properties Service:– objektumokhoz tulajdonságok rendelhetők, ezek
kezelése (Any típus)
• Security Service:– Elosztott biztonsági szolgáltatások
• Licensing Service:– licensz jogok kezelése
![Page 19: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/19.jpg)
1999. december Tihanyi Sándor 19
CORBAservices (5/3)
• Object Transaction Service:– műveletek csoportosítása, commit-rollback protokoll
• Concurency Control Service:– több felhasználó esetén az adatbázisokban fellépő
konkurencia kezelése
• Object Query Service:– Objektumok, OO és relációs adatbázisok
összekapcsolhatóak egyetlen adatbázisba, ezek lekérdezése
![Page 20: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/20.jpg)
1999. december Tihanyi Sándor 20
CORBAservices (5/4)
• Naming Service:– az objektumok azonosítása megnevezés alapján
• relatív név az ún. Naming Context-hez képest• összetett név, a részek:
– id: megnevezés– kind: fajta
» pl.: object_code, c_source, executable, ...» nem kell névkonvenció (pl. *.o = UNIX obj. file)
– csak névOR összerendelés
– API szinten– bind, resolve, ...– név konvertálás általános formátumra (pl. Space = %20)
![Page 21: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/21.jpg)
1999. december Tihanyi Sándor 21
CORBAservices (5/5)
• Trader Service:– az objektumok „tartalom” szerinti megkeresése
– néven kívül más tulajdonságok is kereshetők• bármiOR összerendelés
– „yellow pages”
– alkalmazási mód miatt nem API, hanem alkalmazás szinten implementált
• Objektum böngésző
![Page 22: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/22.jpg)
1999. december Tihanyi Sándor 22
CORBAfacilities
– Vertical CORBAfacilities• üzleti szegmens specifikus alkalmazások támogatása
• meglévő üzleti szabványok átültetése– egészségügy, pénzügy, telekommunikáció, ...
~ elemzési minták
– Horizontal CORBAfacilities• Általános funkciók
– felhasználói interfész, menedzsment (info, rendszer, folyamat), ...
• első: Compound Document
![Page 23: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/23.jpg)
1999. december Tihanyi Sándor 23
ORB megvalósítások
• Kötelező részek a szabványból:– CORBA Core
• CORBA objektum modell
• CORBA architechtúra
• OMG IDL szintaktika és szemantika értelmezése
– CORBA Interoperability• Internet-Inter-ORB-Protocol (IIOP - TCP/IP felett)
![Page 24: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/24.jpg)
1999. december Tihanyi Sándor 24
ORB megvalósítások
– ORB komponensek közül:• Dynamic Invocation Interface (DII)
• Dynamics Skeleton Interface (DSI)
• Interface Repository (IR)
• az ORB interfész
• Basic Object Adapter
– IDL fordító legalább egy nyelvre• C, C++, Smalltalk, Java, Ada, COBOL
• lehet több nyelv támogatása
![Page 25: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/25.jpg)
1999. december Tihanyi Sándor 25
További lehetőségek
– ORB-k közötti kapcsolat• IIOP mellett mások (pl. DCE ESIOP)
– CORBAservice-k• Főleg a Lifecycle, Events, Naming és a Persistent
Object Service-t valósítják meg
• Pl. Transaction and Concurrency csak speciális gyártók CORBA-jában
– CORBAfacility-k• Pl. Compound Document Management and Display
![Page 26: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/26.jpg)
1999. december Tihanyi Sándor 26
ORBacus for C++ and Java
• Object-Oriented Concepts, Inc. • http://www.ooc.com/ob
• IDL fordító• C++ és Java nyelvre• HTML és RTF formátumra dokumentáláshoz
• Windows 95/98/NT, UNIX, Linux rendszerekre• Egy- és többszálas programozás támogatása
• többféle konkurrencia modell használható
• Interface Repository• segítségével könnyen lehet IDL fordítókat írni más nyelvekre
![Page 27: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/27.jpg)
1999. december Tihanyi Sándor 27
ORBacus for C++ and Java• Megvalósított CORBAservice-ek:
– Naming, Event, Property
• Saját kommunikációs protokoll beillesztése– Open Communications Interface (OCI)– pluggable protocols:
• IIOP (TCP/IP), SSLIOP, ATM, ISDN, multicast UDP/IP
• Dinamikus programozás– Dynamic Invocation Interface (DII), Dynamic Skeleton
Interface(DSI)– DynAny típus
• a fordítási időben ismeretlen objektumok kezelésére
![Page 28: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/28.jpg)
1999. december Tihanyi Sándor 28
ORBacus for C++ and Java
• Kiegészítő elemek, alkalmazások az OOC-től:– SSL
• biztonságos kommunikáció
• egy OCI pluginként írták meg
– Trader • objektum kereső
• Trader Service applikáció megvalósítás
– Names • adminisztrációs GUI
• applikációs segédeszköz a Naming Service használatához
![Page 29: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/29.jpg)
1999. december Tihanyi Sándor 29
Trader screenshot
![Page 30: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/30.jpg)
1999. december Tihanyi Sándor 30
ORBacus konkurrencia modellek
• Egyszálas– blokkoló– reaktiválódó
• Többszálas– Thread-per-Client Server– Thread-per-Request Server– Thread Pool Server
![Page 31: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/31.jpg)
1999. december Tihanyi Sándor 31
Az IDL nyelv
• Interface Definition Language• Feladata:
– objektum felületének szabványos leírása• nyelvfüggetlen módon• architektúra független módon
– pl. byte-sorrend, ábrázolás
– objektum azonosítható az IDL leírása alapján• ORB részére• Object Browser és debugger funkciókhoz
![Page 32: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/32.jpg)
1999. december Tihanyi Sándor 32
Az IDL nyelv
• Részei– modul
• több interfész összefogása– interface
C++ class– attribute, readonly attribute
• egyszerű típusok, struktúrák
– metódusok• in, out, inout argumentumokkal• oneway metódusok: aszinkron módon hívható
– exception• kivétel-típus
![Page 33: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/33.jpg)
1999. december Tihanyi Sándor 33
Interfész specifikáció leképzése
obj.IDL
obj.cppobj.h obj_skel.h obj_skel.cpp
obj_impl.h obj_impl.cpp
Server.cppClient.cpp
mi írjuk
generálódik
![Page 34: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/34.jpg)
1999. december Tihanyi Sándor 34
Példa alkalmazás: Hello World!
• IDL file:
//IDLinterface Hello{
void hello();};
Ebből az idl fordító a következőket generálja:
hello.h, hello.cpp, hello_skel.h,hello_skel.cpp
![Page 35: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/35.jpg)
1999. december Tihanyi Sándor 35
Hello World: szerver oldal
• Hello_impl.h, Hello_impl.cpp– a Hello_skel osztályból örököltetjük az objektumot– itt írjuk meg a tényleges funkciókat
• Server.cpp– ORB és BOA objektumok példányosítása– Hello_impl objektum példányosítása– objektumreferencia kiíratása fájlba az ORB objektum
segítségével– a BOA elindítása: a szerver működik és várja a
kéréseket
![Page 36: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/36.jpg)
1999. december Tihanyi Sándor 36
Hello World: kliens oldal
• Client:– ORB objektum példányosítása
– a szerver által fájlba kiírt objektum-referencia beolvasása, majd CORBA objektummá konvertálása
– az előbb kapott CORBA objektumból a hello objektum elkészítése (a proxy objektum)
– ezek után az objektum úgy használható, mint ha a sajátunk volna
• pl. hello->hello(); hívás
![Page 37: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/37.jpg)
1999. december Tihanyi Sándor 37
Hello World: osztályhierarchia
CORBA_Object
Hello
Hello_skel
Hello_impl
CORBA_Object_skel
ServerClient
![Page 38: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/38.jpg)
1999. december Tihanyi Sándor 38
Objektumok elérése
• Objektum referencia• hostname, port number, object key• stringgé alakítható és vissza
• Referencia felhasználása– referencia-string beolvasás fájlból
• Hello World! példában is ez szerepelt• szükséges a fájl megosztása
– URL-en keresztül• pl. http://www.corbaserver/object.ref
![Page 39: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/39.jpg)
1999. december Tihanyi Sándor 39
Objektumok elérése
– Applet paraméterként• referencia-string a HTML kódba
• a paraméter feldolgozása– felhasználás mint a fájlból olvasáskor
– Névszerverhez kapcsolódás• Általános ORB:
– get_inet_object/3 függvénnyel
– Initial Services beolvasása (parancssori megadás)
• ORBacus specifikus:– iiop://hostname:port/object-name
![Page 40: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/40.jpg)
1999. december Tihanyi Sándor 40
További objektumok elérése
• Factory-mintával
• Így csak a B-t kell elérni az előbbi módszerekkel
//IDLinterface A{};
interface B{
A getA();};
![Page 41: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/41.jpg)
1999. december Tihanyi Sándor 41
Naming Service használata ORBacus-szal
• Naming szerver funkció elindítása egy adott porton
• nameserv -i -OAport 10000 > nameserv.ref• java com.ooc.CosNaming.Server -i Oaport 10000\ > nameserv.ref
• NT Registry: service regisztrálás • ntnameservice -i• ntnameservice -u (leállítás)
![Page 42: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/42.jpg)
1999. december Tihanyi Sándor 42
Naming Service használataORBacus-szal
• Kliens kapcsolódása a Naming szerverhez– A default NameContext beállítása
• java MyClient -ORBservice NameService `cat\ nameserv.ref`
• java MyClient -ORBconfig orb.cfg– az orb.cfg tartalmazza a beállításokat
• Műveletek a Naming szerverrel• bind, bind_context, new_context, bind_new_context, unbind
• resolve, list (iterator)
![Page 43: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/43.jpg)
1999. december Tihanyi Sándor 43
Más lehetőségek a CORBA használatára
• SUN:– Java IDL
• JDK 1.2 része
• Csak alapszintű CORBA: – jidl/idltojava– BOA, DII, DSI, Naming Service
• tnameserv -ORBInitialPort=1050• Más gyártók javasolják a csomagok lecserélését a sajátjukra a
bővebb funkciók használata érdekében
![Page 44: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/44.jpg)
1999. december Tihanyi Sándor 44
Más lehetőségek a CORBA használatára
• IONA Technologies– Orbix (C++), OrbixWeb (JAVA)
• GNU– MICO– ORBit
• ORBit-perl, ORBit-C++, ORBit-Eiffel
• GNU Ada CORBA Kit (GNACK)
• Torb: Tcl/CORBA interfész
![Page 45: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/45.jpg)
1999. december Tihanyi Sándor 45
Címjegyzék
– Siegel, Jon: CORBA Fundamentals and Programming, 1996
– Orfall, Robert & Harkey, Dan: Client/Server Programming with JAVA and CORBA, 1998
– OMG: http://www.omg.org
![Page 46: Elosztott objektumok használata](https://reader035.fdocument.pub/reader035/viewer/2022062408/5681404f550346895dabc13a/html5/thumbnails/46.jpg)
1999. december Tihanyi Sándor 46
Termékek
– http://www.ooc.com/ob– http://java.sun.com/products/jdk/idl– http://www.iona.com/orbix– http://www.iona.com/orbixweb– http://www.labs.redhat.com/orbit– http://www.mico.org