Elosztott objektumok használata

46
Elosztott objektumok használata Tihanyi Sándor 1999. december

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 Presentation

Transcript of Elosztott objektumok használata

Page 1: Elosztott objektumok használata

Elosztott objektumok használata

Tihanyi Sándor1999. december

Page 2: Elosztott objektumok használata

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1999. december Tihanyi Sándor 29

Trader screenshot

Page 30: Elosztott objektumok használata

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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