elosztott objektumok használata
DESCRIPTION
Elosztott objektumok használata. Tihanyi Sándor 1999. december. Tartalom. CORBA szabvány CORBA részei komponensek Objektumok elérése Naming Service használata CORBA termékek, példák. Mi is az a CORBA?. Elosztott számítógépes alkalmazások korábban csak UNIX világban - PowerPoint PPT PresentationTRANSCRIPT
Elosztott objektumok használata
Tihanyi Sándor1999. december
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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)
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ő
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
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)
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
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
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
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
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
1999. december Tihanyi Sándor 29
Trader screenshot
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
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
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
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
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
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
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
1999. december Tihanyi Sándor 37
Hello World: osztályhierarchia
CORBA_Object
Hello
Hello_skel
Hello_impl
CORBA_Object_skel
ServerClient
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
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
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();};
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)
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)
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
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
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
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