Mi a CORBA? z
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.
z
Általánosabb esetben az objektumok függetlenné válnak az őket létrehozó programoktól, programoktól, és önálló - pers perszisztens módon léteznek.
z
A CORBA (Common Object Request Broker Architecture) Architecture) a jelenleg több mint 800 tagú, a számítástechnika minden ágát magába foglaló konzorcium, az OMG (Object Management Group) Group) terméke.
z
CORBA segítségével olyan szoftverszoftverkomponenseket definiálhatunk, amelyek különböző hálózati pontokon, eltérő operáoperációs rendszerek felett, esetleg másmás-más programnyelvben implementálva egy közös protokollon keresztül képesek az együttműködésre.
CORBA
z
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.
z
Ennek a komponens elvnek egyik legismertebb megvalósítása a CORBA. CORBA.
z
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 – DistriDistributed Component Object Model néven. A Microsoft a COM technológiát fejleszti tovább a Windows 20002000-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'' ,,szíve'' az ORB (Object Request Broker) Broker) felelős az objektumok közötti kapcsolat létrehozásáért és fenntartásáért. z Fontos szerepe, hogy elfedje a különböző címtartományok (programok) közötti kommunikációt. z
1
Az ORB felett az objektumok úgy létesílétesítenek egymással kapcsolatot, mintha mindannyian egyetlen programban, egyetlen címtartományban léteznének. z 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éhatékony adatcsere, stb. z
A kliensoldalon z
Az ORB több összetevőt tartalmaz a kliens és a szerveroldalon…
z
A dinamikus hívási felület (Dynamic Invocation Interface, 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.
z
A kliens Interface Definition Language (IDL) kapcsolódási csonk (Client IDL Stubs) Stubs) biztosítja a kliensoldal statikus felületét a CORBA objektumok eléréséhez.
z
Az interfészinterfész-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 interfészinterfész-szótárhoz.
2
A szerveroldalon Az ORB felület (ORB interface) néhány hasznos helyi szolgáltatást nyújt a CORBA programozóknak. programozóknak. z pl. objektumhivatkozások karakterlánccá és visszakonvertálása, ami az objektumok kapcsolatainak tárolásához előnyös.
z
z
A dinamikus kapcsolódási felületet (Dynamic Skeleton Interface, 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.
z
z
Az implementációs szótár (ImplemenImplementation, Repository) Repository) a megvalósított szerveroldali osztályok leírását tartalmazza, valamint információt arról, mely objektumokat példányosították és hogyan lehet azonosítani azokat.
z
z
A szerver IDL kapcsolódás: felület (Server IDL Stub, Stub, váz, skeleton) skeleton) a szerverobjektumok által nyújtott statikus szolgáltatásokat definiálja. A kliensoldali csonkhoz hasonlóan a vázat (szkeletont) szkeletont) is az IDL fordító generálja.
Az objektumadapter (Object Adapter) a fenti két felület implementációjához szükséges, de önállóan is használható. z Itt helyezkedik el az objektumok létrehozásához, metódusaik hívásához szükséges futási környezet.
Az ORB felület, felület, amely a szerveroldalról is elérhető, megfelel a kliensoldalinak.
3
Az Interface Definition Language (IDL) z
Az egyik legfontosabb objektumorientált jellemzőnek, az adatelrejtésnek (encapsulation) encapsulation) kiemelt szerepe van: az objektumok közötti kapcsolattartás csak az osztályok jól definiált felületén interfészén - keresztül lehetséges.
z
Az IDL deklaratív nyelv, azaz támogatja típusok, konstansok, adatelemek, metómetódusok, 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.
A CORBA erősen objektumorientált szemléletű rendszer. z Ennek megfelelően az egyes szoftverszoftverkomponenseket osztályokként definiáljuk, és használhatunk olyan általánosan elterjedt technikákat, mint az öröklődés vagy a kivételkezelés. z
Az osztályok definiálására az IDL, IDL, az Interface Definition Language nyelvet használjuk. z Az IDL hordozható, programozási nyelvtől, operációs rendszertől független nyelv. nyelv. z Nem azonos a C++szal, , bár szinC++ szal szintaxisának gyökerei oda vezethetőek vissza. z
Egy IDL program vázlatosan akövetkező: akövetkező: z
Az IDL nyelven deklarált osztályokat kékésőbb konkrétan konkrétan megvalositjuk JavaJava-ban. z Ez két lépésben történik: az IDL nyelven leírt interfészekből az IDLIDL-fordító készít konkrét Java nyelvű kódot, amelyet ki kell egészítenünk a metódusok - szintén konkrét nyelvi - megvalósításával. z
z z z z z z z z z z z z z z
module =
{ ; ; konstandeklarációk>; ; kivételdeklarációk>; interface azonosító> [ : öröklődés] { ; ; konstandeklarációk>; ; kivételdeklarációk>; attribútumdeklarációk> [<mód>] (<paraméterek>) [raise ] [kontextus]; } }
4
Az IDLIDL-Java leképezés Az IDLIDL-Java fordító IDL interfészforrást olvas és Java kódot hoz létre. z Az IDL interfészinterfész-ből létrehozott Java interinterfész mellett generálásra kerülnek a csoncsonkok, kok, vázak (szkeletonok), szkeletonok), és egyéb álloállományok is. z Az IDLIDL-Java fordítókat az egyes ORB gyártók biztosítják termékeikhez. termékeikhez. z
Habár az IDL nyelv szintaxisa a C++ -hoz áll közelebb, a mögöttes elvek a Java által kitűzött célokhoz szorosabban kötődnek. z Ennek megfelelően az IDL alaptípusainak és típuskonstrukcióinak leképezése a Java nyelvre viszonylag egyszerű. z
IDL paramétertípusok Java nyelvi leképezése
IDL alaptípus
Megfelelő Java típus IDL típus
in
char,wchar
char
short
short
short
long
Int
long long
long
unsigned short
short
unsigned long long
unsigned long
int
float double
double
unsigned long long
long
float
float
out
inout
visszatérő érték
short
ShortHolder
ShortHolder
long
int
IntHolder
IntHolder
int
long long
long
LongHolder
LongHolder
long
unsigned short
short
ShortHolder
ShortHolder
short
unsigned long
int
IntHolder
IntHolder
int
long
LongHolder
LongHolder
long
float
FloatHolder
FIoatHolder
float
DoubleHolder
DoubleHolder
double
boolean
boolean
BooieanHolder
short
BooieanHolder
boolean
char
char
CharHolder
CharHolder
char
octet
byte
ByteHolder
ByteHolder
byte
double
double
any
Any
Any
Any
Any
octet
byte
enum
int
IntHolder
IntHolder
int
referencia
Object Ref
típusHolder
típusHolder
ObjectRef
boolean
boolean
struct
class
class
class
class
string,wstring
java.lang.String
union
class
class
class
class
string
String
StringHolder
StringHolder
String
sequence
class
class
class
class
array
array
array
array
array
A CORBA további lehető lehetőségei z
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 interfé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.
z
Nemcsak lehetséges, de a CORBA alkalalkalmazá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 akaknázza ki az applet technika és az objekobjektumorientált programozás valamennyi előnyét.
5
z
A klienskliens-szerver rendszerek előtt teljesen új lehetőségelehetőségeket nyit meg a szerver vissza-hívási technika (callback ), (callback), amire ugyancsak lehetőséget ad a CORBA. A hagyomáhagyományos klienskliens-szerver elképzelés szerint mindig a kliens a kezdeményező, aki aktivizál valamilyen szerver folyafolyamatot. matot. Ha a kliens nem fordul a szerverhez, az nem ké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.)
z
Legfőképpen azonban nem csak statikusan előre definiált műveletekkel - kommunikálhatunk a CORBA objektumok között, hanem használhasználhatjuk a dinamikus hívási felületet (Dynamic Invocation Interface, 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 interfészt lekérdezni, metódusok között válogatni, egy kiválasztott metódus leíráleírását megszerezni, majd a metódust meghívni.
6