CORBA

Dod iespēju diviem procesiem savstarpēji sadarboties. Tie var būt divas JVM, Java ar citu valodu, uz vienas mašīnas vai dažādām mašīnām.

CORBAs jēdzieni

CORBA nāk kopā ar milzumdaudziem jauniem saīsinājumiem. Minēsim tiem definīcijas.

CORBA (Common Object Request Broker Architecture)
Middleware standarts, kas ļauj dažādās valodās un platformās rakstītiem objektiem sazināties savā starpā
DCE (Distrubuted Computeing Environment)
Servisu kopums, kas ļauj veidot sadalītas aplikācijas, kuras darbojas vienlaikus uz dažādām platformām
DCOM (Distributed Component Object Model)
Microsoft komponentu tehnoloģija, CORBA alternatīva
EJB (Enterprise Java Beans)
Javas komponenšu tehnoloģija, kuru nodrošina objektu transakciju monitors (OTM)
IDL (Interface Definition Language)
OMG ieviesta valoda CORBA interfeisu aprakstīšanai
IIOP (Internet Inter-ORB Protocol)
OMG izdomāts protokols, lai CORBA varētu notikt caur Internetu
Middleware
Pilna definīcija: http://webopedia.internet.com/TERM/m/middleware.html - softs, kas kalpo par starpnieku starp diviem patstāvīgiem procesiem.
OMG (Object Management Group)
- dibināta 1989 gadā, šobrīd apvieno ap 800 lielus programmatūras ražotājus, izņemot Microsoft. CORBA specifikāciju izstrādes centrs un idejisks aizstāvis.
The Open Group
http://www.opengroup.org/ - akadēmiska organizācija, kas nodarbojas ar sadalītām aplikācijām, bezvadu sakariem, utml. Ieviesuši DCE jēdzienu.
ORB (Object Request Broker)
CORBAs starpnieks - kanāls pa kuru "korbleti" sazinās savā starpā
RPC (Remote Procedure Call):
Iespēja vienam procesam izsaukt funkciju citā procesā (serverī). Atsevišķie piemēri ir Java RMI (Remote Method Invocation); arī DCOM un CORBA piedāvā servisus, kas līdzīgi tradicionālajiem RPC.

CORBA ievads

CORBA priekšteči

Objektorientētā programmēšana, it īpaši valoda C++, ieviesa koda modularizāciju, to sadalot objektos, kuriem katram ir savi dati un kas sazinās viens ar otru caur stingri norādītiem interfeisiem. Objektus CORBA sauc par komponentiem.

Attālinātā funkciju izsaukšana (RPC) ir raksturīga vairāku procesu sadarbībai. Šādi standarti parādījās jau 80-to gadu sākumā. Tie nebija obligāti saistīti ar objektorientēto programmēšanu, tomēr vēlāk radās arī RMI - Javisks RPC variants.

Transakcijas, sinhronizācija, atslēgas (locks) - daudzpavedienu datubāzu serveri utml. aplikācijas nodrošina datu atstāšanu konsistentā stāvoklī pēc tam, kad ar tiem veiktas sekmīgas vai nesekmīgas apstrādes funkcijas.

Globāli unikāli identifikatori - Web attīstība izraisīja nepieciešamību pēc tādiem, komponentes var meklēt viena otru līdzīgā veidā.

No kā sastāv CORBA

OMG publiskojusi "CORBA objektu autobusu" (CORBA object bus), kurā var dzīvot objekti - komponentes. Visādu platformu eksistējošās programmas var padarīt atbilstošas CORBA standartiem. CORBA ļauj tām vienai otru izmantot, kā arī lietot autobusa piedāvātos pakalpojumus - radīt un iznīcināt objektus, sameklēt tos pēc vārda, uzglabāt to stāvokļus ilglaicīgā (persistent) atmiņā, iegūt to sinhronizācijas atslēgas (locks), utml.

CORBA komponente ir "Sadalīts objekts" (Distributed Object) - t.i. ne jau pati tā ir sadalīta, bet var būt viena no sadalītas aplikācijas sastāvdaļām. Tā ir inteliģents kunkulītis, kurš var dzīvot jebkur datortīklā un piedāvā saviem klientiem publiskotas metodes caur kurām iedarboties uz sevi un iegūt rezultātus. Šīs metodes visas kopā sauc par interfeisu, ko apraksta valodā IDL. Implementāciju komponentes klients neredz - tas redz tikai IDL interfeisu. "Applikāciju serveri", kurus saprogrammējuši Oracle, Sun, HP, IBM, BEA, Novell, Netscape un citi - dažādā veidā realizē iespēju komponentēm dzīvot, bet CORBAs IDL ir kā kontrakts, kurš ļauj tām visām savstarpēji sazināties.

Objektu buss - ORB

Ļauj vietējiem un attālinātajiem objektiem izmantot vienam otru. Katram buss piemīt:

Statiski vai dinamiski metožu izsaukumi
Buss ļauj vai nu kompilācijas laikā definēt izsaucamās metodes, vai arī dinamiski sameklēt tās izpildes laikā.
Augsta līmeņa valodās uzrakstāmi izsaukumi
Komponentu metodes klientam jāvar izsaukt kādā augsta līmeņa valodā. CORBAs "sadalītie objekti" ir neitrāli pret valodu un pret autobusu, kurā tie dzīvo. Komponentu saziņa ir atkarīga tikai no IDL interfeisa, ne no implementācijas.
Komponentu sistēma ir pašaprakstoša
ORBs nodrošina "interfeisu repozitoriju", kuru piereģistrētās komponentes informē par saviem interfeisiem. To var lietot, lai izpildes laikā atrastu vajadzīgās komponentes.
Izvietojuma caurspīdīgums (location transparency)
CORBAs komponenti var būt maziņi, piemēram, Javas klases, vai milzīgas sistēmas, tie var piederēt vienam procesam, dažādiem procesiem, vai pat atrasties uz dažādām platformām. Klienta piekļuve tiem no tā visa nemainās. CORBA programmētājam nav jārūpējas par serveru atrašanās vietām, dažādajiem mašīnvārdu izkārtojumiem dažādās platormās, utml.
Iebūvēts drošības un transakciju atbalsts
CORBA ziņojumi nodod konteksta informāciju viens otram, lai to nodrošinātu.
Polimorfie ziņojumi
RPC uzvedība ir atkarīga no objekta, kas to saņem. Vienu un to pašu klienta pieprasījumu var saņemt visdažādākās serveru komponentes.
Esošās sistēmas var integrēt CORBA vidē
Jebkas, kam pierakstīts IDL izskatās autobusam kā "sadalītais objekts"

Java un OMG

Pirmais JVM-JVM komunikāciju modelis - RMI nebija saistīts ar CORBA. Šobrīd veiktas vairākas darbības, lai CORBA kļūtu par Javas kodola (core) sastāvdaļu:

  • Kopš JDK1.2 Java IDL kompilators un org.omg.* bibliotēkas ir standartjavas sastāvā
  • RMI implementēts virs CORBA IIOP protokola
  • Enterprise Java Beans izmanto CORBA kā sadalīto objektu modeli.

Lapa mainīta 2004-12-02 22:00:22