elosztott objektumok használata

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

Upload: deanne

Post on 09-Jan-2016

42 views

Category:

Documents


0 download

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

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