TEMĂ DE...
Transcript of TEMĂ DE...
UNIVERSITATEA ”POLITEHNICA” BUCUREȘTI FACULTATEA DE ELECTRONICĂ, TELECOMUNICAȚII ȘI TEHNOLOGIA INFORMAȚIEI
Bucuresti
2014
TEMĂ DE CASĂ
Common Object Request Broker Architecture
Profesor coordonator : Studenți:
Conf .dr. ing Ștefan STĂNCESCU Bogdan Alin TUDORACHE
Marian Adrian CEPOI
Dragos Ciprian ENOIU
CUPRINS
I. MODELUL OBIECT …………………………………………….…….……….….……. 1
1.1. Prezentare generală …………………………………………….….……..….………. 1
1.2. Semantică ……………………………………………………..………….………….. 2
1.2.1. Obiecte ……………………………………………………………………..….. 2
1.2.2. Cereri ………………………………………………………….…..……..……. 2
1.2.3. Crearea și distrugerea obiectelor ……………………………….…..…...…….. 3
1.2.4. Tipuri ………………………………………………………….…....…………. 3
1.2.5. Interfețe ……………………………………………………………..…...……. 4
1.2.6. Operații …………………………………………………………….....………. 4
1.2.7. Atribute …………………………………………………………….....………. 4
1.3. Implementare ……………………………………………………….……..………… 5
1.3.1. Execuția ……………………………………………………..……..…………. 5
1.3.2. Construcția …………………………………………………………....………. 5
1.4. Broker-ul de cereri de obiecte …………………………………………...…..………. 6
1.4.1.Introducere în sisteme distribuite ……………………………………..………. 6
1.4.2.ORB- privire generală …………………………………….……………..……. 7
II. ARHITECTURA CORBA ………………………………………………………...……. 8
2.1. Structura Object Request Broker ……………………..………………………..……. 9
2.1.1. Implementarea obiectelor ………………………..……………………..……. 10
2.1.2. Referințele obiectelor ……………………………..…………………………. 11
2.1.3. Limbajul de definire a interfeței (OMG IDL) ……..………………...………. 11
2.1.4. Maparea OMG IDL în limbaje de programare ……..…………………...…... 12
2.1.5. Adaptoare obiect (OA) ………………………………..…………………...… 13
2.1.6. Interfața ORB …………………………………………..…………………..... 13
2.2. Exemple ORB …………………………………………………..………….………. 14
2.2.1. Server-based ORB ………………………………………..……...………….. 15
2.2.2. System-based ORB ………………………………………..………………… 15
2.2.3. Library-based ORB ……………………………………….....………………. 15
2.3. Structura implementarii unui obiect ………………………………..………………. 16
III. INTEROPERABILITATEA …………………………………………..……..………. 17
3.1. Elementele interoperabilității …………………………………………..……..……. 17
3.1.1. Arhitectura interoperabilității ORB ………………………………..…....…… 17
3.1.2. Suportul Inter-ORB Bridge ………………………………………….....……. 18
3.1.3. General Inter-ORB Protocol (GIOP) …………………………………...……. 18
3.1.4. Internet Inter-ORB Protocol (IIOP) ………………………..………..………. 19
3.2. Exemple de soluții ale interoperabilității …………………………..….……………. 20
3.3. Factori de motivare …………………………………………………...……….……. 20
3.3.1. Diversitatea implementării ORB ……………………………….....…………. 21
3.3.2. Limitele ORB ……………………………………………………..…….…… 21
3.4. Design-ul interoperabilității ………………………………………………..…...….. 22
BIBLIOGRAFIE ………………….………………………………………………....……. 23
Bogdan Alin TUDORACHE Modelul obiect
Page | 1
1. MODELUL OBIECT
In acest capitol va fi descris modelul obiect care sta la baza arhitecturii CORBA.
Denumirea de C.O.R.B.A. este o prescurtare de la Common Object Request Broker
Architecture, si acesta isi are echivalentul in romana de: Arhitectura Brokerului de Raspuns la
Cererile Obiectelor Comune. Aceasta arhitectura este un derivate al Core Object Model (
Modelul Obiectului Nucleu).
1.1. Prezentare generala
Acest model oferta o prezentare organizata a conceptelor de obiect si a definirii
acestora. Defineste un model partial pentru calcul care inglobeaza caracteristicile principale
are obiectelor, asa cum sunt acestea folosite in procesele tehnologice. Modelul descris este
un obiect model concret, care poate fi diferit de altele prin anumite caracteristici: poate
elabora modele abstracte facandu-le mai specifice ( de exemplu: definirea tipului de cereri a
parametrilor ) sau prin popularea modelului .
Un sistem obiect este o colectie de obiecte care izoleaza clientii ( solicitantii de
servicii ) de providerii de servicii printr-o interfata binedefinita, care incapsuleaza. Intr-un
mod particular , clientii sunt izolati de implemetarea serviciilor cum ar fi reprezentarea
datelor dar si a codului executabil.
Modelul obiect descrie concepte care sunt importante pentru clienti, incluzand
concepte cum ar fi crearea obiectelor si operatii de identitate si ce de cerere, tipuri si
semnaturi. Apoi descrie conceptele legate de implementarea obiectelor, incluzand conceptele
din spatele implementarii,metodele, motoarele de executie si de activare.
Cand ne referim la acesa ne gandim ca este cel mai specific si cel mai prescriptiv cand
vine vorba de definirea conceptelor importante pentru clienti. Discutia din spatele
implementarii obiectului este mai sugestiva, cu dorinta de a acorda maxima libertate
diferitelor tehnologii de creare a obiectelor pentru a reprezenta mai tarziu diferite moduri de
implementare a acestora.
Acest model este un exemplu clasic de model obiect in care clientii trimit un mesaj
unui obiect. Conceptual, obiectul interpreteaza mesajul si decide ce actiune sa indeplineasca.
Ca majoritatea modelelor obiect, un prim paramentru distins este necesar, acesta identifica
operatia care are loc; interpretarea mesajului de catre obiect implica selectarea unei metode
bazate pe operatii specifice. In mod general, metoda selectiei poate fi indeplinita fie de catre
obiect fie de catre ORB. ORB-ul reprezinta Object Request Broker, un program intermediar
care promoveaza interoperabilitatea prin sisteme de obiecte distribuite de la diferite surse. In
esenta acesta raspunde la cererile primite.
Bogdan Alin TUDORACHE Modelul obiect
Page | 2
1.2.Semantica
Un sistem obiect ofera servicii clientilor. Un client, al unui serviciu, reprezinta o
entitate capabila sa raspunda la cererile trimise de catre serviciu.
1.2.1 Obiecte
Acest timp de sistem contine entitati ca obiecte. Obiectul este in esenta o entitate
incapsulaibla, identificatila care ofera unul sau mai multe servicii care pot fi cerute de catre
un client.
1.2.2 Cereri
Clientii necesita servicii prin emiterea de cereri.
Termenul de cerere este folosit pentru a descrie o necesitate, o serie de evenimente au
loc intre clienti si sistem iar ultimul eveniment este cel care cauzeaza initierea cererii. Cand
ne referim la o astfel de operatiune trebuie sa tinem cont de niste informatii asociate cu
aceasta, cum ar fi obiectul tinta, niciunul sau mai multi paramentri, contextul in care s-a emis
cererea si cel mai important modul ( formularul) de emisie al cererii.
Formularul este o descriere sau un tipar care poate fi evaluat sau efectuat de mai
multe ori pentru a initia trimiterea de cereri. O alternativa a acestuia o reprezinta solicitare
trimitsa catre interfata dinamica de invocare, pentru a crea o structura de invocare, la care
adaugam argumentul.
O valoare reprezinta orice poate fi considerat ca un paramentru intr-o cerere. Mai
particular, o valoare este o instanta a OMG-Object Management Group . Exista si valori non-
obiect, care fac in esenta acelasi lucru ca si valorile referitoare la obiecte.
Referinta unui obiect, este o valoare care se refera intr-un mod fiabil la un anumit
obiect, la un obiect in particular. Speficit, un obiect referinta va apartine mereu de acelasi
obiect indiferent de cate ori referinta este folosita intr-o cerere. Un obiect poate fi definit de
mai multe referinte diferite.
O cerere, reprezinta un declansator pentru ca un serviciu sa fie efectuat in partea
clientului. Un rezultat posibil al operatiei este inapoierea rezultatelor clientului. Daca in
timpul indeplinirii acestei operatii are loc o exceptie declansata de catre o intrerupere,
exceptia este returnata, iar pe langa aceasta este posibil sa apara si paramentri aditionali.
Parametrii din cerere sunt identificati prin pozitie, acestia pot sa fie folositit atat
pentru introducerea datelor cat si la iesire sau chiar parametru de intrare si iesire. De
Bogdan Alin TUDORACHE Modelul obiect
Page | 3
asemenea o cerere poate returna un sigura valoare rezultat, dar rezultatele pot fi stocate si in
parametrii de iesire sau intrare-iesire.
Cererile au urmatoarele caracteristici:
Orice valoare dintr-un parametru nu este pastrata permanent, aceasta putand fi
eliminata.
Ordinea in care parametrii de iesire sunt scrisi nu este mereu aceeasi.
Rezultatul si valorile care sunt stocate in parametrii de iesire sau de intrare-iesire sunt
nedefiniti daca apar exceptii.
1.2.3 Obiectele de creare si distrugere
Cand ne referim la client, pentru acesta nu exista mecanisme speciale pentru creare
sau distrugere. Obiectele fac aceste operatiuni din cauza fluxului de cereri primite, valorile
pur si simplu sunt inlocuite. Rezultatul operatiei de creare al obiectelor este primit de catre
client in forma unui obiect referinta care are legatura cu un nou obiect.
1.2.4 Tipuri
Cand ne referim la un tip, o identificam ca o entitate asociata unui predicat, definit
unor entitati. Acestea sunt folosite fie ca metode de restrictie a unor posibili parametri sau
pentru a caranteriza un rezultat anume. Tipul unui obiect este in stransa legatura cu referintele
acestuia.
Acestea pot sa fie:
Numere intregi (integer) pe 16/32/64 biti sau in baza 2 ( fara semn)
In precizie simpla(32biti), in precizie dubla(64biti) sau precizie estinsa
Caractere
Boolene: True si False
String ( litere/cifre/caractere) de orice lungime
Any
Sau pot sa fie construite:
Tipuri valoare, care specifica stari
Tipuri secventa
Tipuri array
Tipuri interfata
Bogdan Alin TUDORACHE Modelul obiect
Page | 4
1.2.5. Interfete
O interfata reprezinta o lista continand operatiile posibile pe care un client le poate
solicita de la un obiect, prin acea interfata. Este o descriere a modului in care un serviciu este
implementat de catre obiectele care suporta interfata, accesat prin intermediul acelor posibile
operatii.
Tipul interfetelor este dat de obiectul tip, obiectul referinta va indeplini obiectul tip,
numai daca obiectul referinta va duce la capat cererile interfetei.
Interfetele functioneaza dupa Principiul Substitutiei lui Libskov, care zice:” Funcțiile
care utilizează pointări sau referințe la clase de bază trebuie să poată folosi instanțe ale
claselor derivate fără să își dea seama de acest lucru”1. Acest lucru translatat in modelul
obiect inseamna ca: daca interfata A este derivatadin interfata B, atunci referinta catre un
obiect care sustine interfata A poate fi folosita unde tipul formal al unui parametru este
declarat ca fiind B. alupigus
1.2.6.Operatii
Actul prin care se face o cerere reprezinta invocarea unei operatii. Aceasta este
identificata de catre identificatorul operatiei.
O operatie are o semnatura care descrie valorile returnate de parametrii si rezultatele
returnate.
Semnatura poate fi formata din: o specificare a parametrilor necesari pentru acea
operatie, o specificare a unui rezultat al operatiei, un indicator a unei informatii contextuale
aditionale.
Operatia raspunde doar la o singura cerere, este de sine statatoare. Are paramentri
caracterizati prin tip si mod. Modul indica cum trebuie sa fie pasata valoarea, de la client la
server(In), de la server la client(Out), sau combinat (InOut). Paramentrul reprezinta
constrangerea posibilei valori care este pasata in directia dictata de catre mod.
1.2.7.Atribute
O interfata poate avea mai multe atribute. Un atribut este echivalentul logic al
declararii unei perechi de functii: una sa retur \neze valoarea atributului si alta sa seteze
valoarea atributului. Acesta poate fi si read-only (numai pentru citire), in acest caz functia de
returnare este predefinita.
1 http://www.aut.upt.ro/staff/diercan/data/PSSC/curs-03.pdf
Bogdan Alin TUDORACHE Modelul obiect
Page | 5
1.3.Implementarea
Implementarea unui obiect sistem intretine activitatile computationale necesare sa
afecteze comportamentul serviciilor dorite. Aceste activitati includ procesarea rezultatelor sau
reimprospatarea starii sistemului. In timpul acestui proces, cereri aditionale pot fi
transmise.Modelul implementarii este alcatuit din doua parti: modelul de exevutie si modelul
de constuctie. Executia descrie cum serviciile au loc, dar constructia ne arata cum sunt
definite.
1.3.1.Executia
Un serviciu dorit este realizat intr-un sistem computational prin executarea unui cod
care opereaza asupra unor date. Datele reprezinta componenta a starii sistemului
computational, in timp ce codul efectueaza serviciul cerut, care poate schimba starea acestuia.
Codul care executat sa indeplineasca un serviciu se numeste metoda. Metoda este o
descriere a computatiei care poate fi interpretata si ca un motor de executie. Metoda este
definita de catre un format care caracterizeaza un set de motoare.
Motorul de executie este o masina abstracta care interpreteaza metodele de un anumit
format, lucru care duce la stabilirea carei computatie sa fie indeplinita. Executia unei metode
se numeste activare.
Cand un client face o solicitare, o metoda a unui obiect tinta este apelata. Parametrii
de intrare trimisi de la solicitant sunt pasati prin metoda si parametrii de iesire sunt returneaza
solocitantului valoarea dorita
1.3.2.Constructia
Obiectul sistemului computational pune la dispozitie metode pentru realizarea
comportarii de cerere. Aceste mecanisme inclut si definitia obiectului stare, definitia
metodelor si defilitia cum ar trebui sa fie aleasa infrastructura obiectului pentru a selecta
metoda de executie si a alege portiunile obiectului stare cele mai potrivite.
Mecanismele, de asemenea trebuie sa descrie actiuni concrete asociate crearii
obiectului, asemenea asocieri are noului obiect cu metoda potrivita.
Implementarea unui obiect, sau pur si simplu implementarea, este definitia care
confera informatia necesara pentru a crea un obiect si a-i overi posibilitatea sa parcicipe in
asigurarea unui set adecvat de servicii. O implementare tipic include, pe langa alte lucruri,
definitii ale metodelor cu care opereaza asupra starii unui obiect, dar si informatii despre
tipurile obiectului respectiv.
Bogdan Alin TUDORACHE Modelul obiect
Page | 6
1.4.Brokerul de cereri al obiectelor
1.4.1.Introducere in sisteme distribuite
Distributia computationala este un domeniu in informatica care studiaza sistemele
distribuite. Un sistem distribuit este un sistem software in care componentele dintr-o retea de
calculatoare comunica si isi coordoneaza actiunile prin trimiterea si receptionarea de mesaje.
Echipamentele care alcatuiesc reteaua comunica intre ele, interactioneaza, pentru a putea
ajunge sa-si atinga scopul dorit.
Computatia distribuita se mai refera si la folosirea sistemelor distribuite pentru a
rezolva probleme computationale, pentru a ajunge la un rezultat problema este impartita in
mai multe task-uri, fiecare dintre ele fiind rezolvate de unul sau mai multe calculatoare,
acestea comunicand intre ele prin mesaje.2
Poza de mai jos reprezinta o comparatie intr-un sistem distribuit( a si b ) si un sistem
paralel(c ). Intr-un sistem distribuit nu exista un o magistrala de memorie comuna, fiecare
componena este o unitate de sine statatoare, acestea avand acces la date diferite si oferind
doar rezultate.
3
2 http://en.wikipedia.org/wiki/Distributed_computing 3 Imagine preluata de pe site-ul : http://en.wikipedia.org/wiki/File:Distributed-parallel.svg
Bogdan Alin TUDORACHE Modelul obiect
Page | 7
1.4.2. ORB-privire generala
ORB este o prescurtare de la Object Request Broker, si anume Brokerul de raspuns la
cereri al obiectelor, este un software intermediar (middleware) care permite crearea legaturii
intre calculatoare pe reteaua de calculatoare. ORB-ul promoveaza interoperabilitatea dintre
sisteme obiect distribuite de la diferiti furnizori, in timp ce alta parti comunica intre ele tot
prin intermediul ORB.
Acesta se ocupa de transformarile din procesele structurilor de date si ale secventelor
nealterate de biti, transmisi pe retea. Procesul in sine, se numeste serializare, iar in plus fata
de aceastamai are si ale caracteristiici, de exemplu: tranzactii distribuite sau chiar programare
in timp real.
In limbaje de programare pe orientate pe obiect, ORB-ul ofera structura de rezistenta,
scheletul pe care are loc comunicarea de-a lungul retelei. Cand ne referim la client, aici se
creeaza si se invoca obiecte numite stub, cioturi, folosite ca singura parte vizibila si care
poate fi utilizata in aplicatia clientului. Dupa crearea acestora, ORB-ul serializeaza datele si
trimite o cerere catre partea-server. Aici, este localizat obiectul tinta, se executa operatia
dorita si se returneaza rezultatul.
Implementari:
CORBA- Common Object Request Broker Architecture
Ice- Internet Communications Engine – Motorul de cautare al Internetului
ORBit- un ORB CORBA folosit ca intermediat Pentru GNOME ( un mediu desktop si
o inferfata grafica pentru utilizator)
In general implementarile ORB se leaga de folosirea Arhitecturii CORBA, acesta
fiind foarte folosit iar aplicatiile foarte vaste.
Marian Adrian CEPOI Arhitectura CORBA
Page | 8
II. ARHITECTURA CORBA
Din dorința de a orienta şi facilita integrarea unor sisteme dezvoltate separat, într-un
singur mediu distribuit eterogen, OMG (Object Management Group) – consorţiu cuprinzând
peste 700 de dezvoltatori, comercianţi şi utilizatori de software – a elaborat, adoptat şi
promovat standarde pentru aplicaţii în medii distribuite. Unul dintre ele este CORBA –
Common Object Request Broker Architecture, care se constituie într-un cadru de dezvoltare a
aplicaţiilor distribuite în medii eterogene.
CORBA este cel mai ambiţios proiect al OMG, la care au aderat toate marile firme de
software, cu excepţia Microsoft, firmă ce a dezvoltat propriul său model, DCOM (Distributed
Component Object Model), incompatibil cu CORBA4.
CORBA este elementul cheie al OMA – Object Management Architecture și un model
propus de OMG pentu a transpune în mediu distribuit eterogen toate avantajele programării
orientate pe obiecte, incluzând: dezvoltarea rapidă, reutilizabilitatea, protecţia implicită, etc.
Arhitectura fundamentală a standardului CORBA conține 4 categorii de obiecte și o
magistrală prin care se realizează legătura acestora:
1) Serviciile CORBA (CORBA services) sunt obiecte standardizate ce pun la dispoziția
celorlate obiecte din sistem operații și servicii fundamentale: serviciul de nume, serviciul de
persistență, serviciul de concurență, serviciul de securitate, serviciul de tranzacții, etc.
2) Domeniile CORBA (CORBA domains) reprezintă ˜standardele verticale˜ adoptate de
OMG pentru diferite categorii (domenii) de aplicații: economie, medicină, telecomunicații, etc.
3) Facilitățile CORBA (CORBA facilities) standardizează interfețe comune mai multor
domenii (ca de exemplu: gestiunea unor documente complexe, gestiunea sistemului, etc.). Se
pot extinde în domeniile verticale.
4) Aplicațiile sunt considerate tot ca obiecte, cu interfețe definite de programator5.
Avantajele CORBA:
- Independență de sistemul de operare și de limbajul de programare;
- Integrarea apliacțiilor existente;
- Infrastructura bogată în obiecte distribuite;
- Transparența locației;
- Transparența rețelei;
- Interfața de invocare dinamică.
Dezavantajele CORBA:
- Investiție inițială ridicată. Aplicațiile bazate pe CORBA necesită investiții enorme
în ceea ce privește training-ul și lansarea arhitecturii, chiar și pentru aplicații de
dimensiuni mici;
- Disponibilitatea serviciilor CORBA. Serviciile obiect specificate de OMG lipsesc
încă în produse care implementeazaă conceptele;
4 Curs: Sisteme de Programe pentru Rețele de Calculatoare, Valentin Cristea, Facultatea de Automatică și
Calculatoare, UPB 5 Curs: Programarea rețelelor de calculatoare, Ioan Jurca, Universitatea Politehnica din Timișoara
Marian Adrian CEPOI Arhitectura CORBA
Page | 9
- Scalabilitatea. Datorită naturii strâns cuplate a arhitecturii CORBA orientate pe
legături, scalabilitatea înaltă așteptată în aplicațiile companiilor poate să nu fie
atinsă6.
Figura 2.0. Arhitectura CORBA7
2.1. Structura Object Request Broker
ORB este serviciul distribuit care implementeaza cererea obiectului la distanţă:
- localizează obiectul la distanţă din reţea;
- comunică solicitarea la obiect;
- aşteaptă rezultatele şi, atunci când sunt disponibile,
- comunică aceste rezultate înapoi la client.
ORB implementează transparent locaţia. Exact acelaşi mecanism de solicitare este
utilizat de către client şi obiectul CORBA, indiferent unde se află obiectul. ORB
implementează independenţa limbajului de programare pentru solicitări şi pentru obiectul
CORBA și face translația necesară dintre limbajele de programare (pentru cele mai utilizate
limbaje)8.
ORB este o magistrală pentru obiecte care oferă un mecanism transparent pentru
expedierea cererilor și recepționarea răspunsurilor către și de la obiecte, indiferent de mediu și
locația lor.
6 Sisteme distribuite – Tehnologii, Dana Petcu, Universitatea de Vest din Timișoara, 2009 7 Curs: Sisteme de Programe pentru Rețele de Calculatoare, Valentin Cristea, Facultatea de Automatică și
Calculatoare, UPB 8 Curs: Medii de proiectare şi programare, Vasile Cioban, Universitatea Babes-Bolyai din Cluj-Napoca
Marian Adrian CEPOI Arhitectura CORBA
Page | 10
Figura 2.1. Structura de bază a unui ORB9
2.1.1. Implementarea obiectelor
O implementare obiect oferă semantica obiectului, de obicei, prin definirea datelor
pentru instanța obiect și codului pentru metodele obiectului. De multe ori implementarea va
folosi alte obiecte sau software suplimentar pentru a pune în aplicare comportamentul
obiectului. În unele cazuri, funcția principală a obiectului este de a avea efecte secundare asupra
altor lucruri care nu sunt obiecte.
O varietate de implementări de obiecte pot fi susținute, inclusiv servere separate,
biblioteci, un program pe metodă, o aplicație încapsulată, o bază de date orientată pe obiecte,
etc. Prin utilizarea de adaptoare obiect suplimentare, putem să asigurăm practic orice stil de
implementare a obiectului.
Figura 2.1.1. Arhitectura CORBA ORB
9 Laborator: Sisteme de Programe pentru Rețele de Calculatoare, Valentin Cristea, Facultatea de Automatică și
Calculatoare, UPB
Marian Adrian CEPOI Arhitectura CORBA
Page | 11
În general, implementările obiect nu depind de ORB sau modul cum clientul invocă
obiectul. Implementările obiect pot selecta interfețe de servicii dependente de ORB prin
alegerea de adaptoare obiect10.
2.1.2. Referințele obiectelor
Clientul specifică obiectul ţintă printr-o referinţă de obiect. Aceasta se creează odată cu
obiectul şi se referă la acesta în mod unic, atâta timp cât obiectul există. Referinţa este “opacă”
pentru client, în sensul că acesta nu o poate modifica. Referinţele de obiecte sunt gestionate
exclusiv de ORB şi au formate standard (ca în IIOP) sau proprietare (de firmă).
Clienţii pot obţine referinţele de obiecte pe mai multe căi:
• La crearea obiectului – clientul poate crea un obiect şi obţine referinţa sa. CORBA
nu are o operaţie specială de creare de obiecte. Pentru a crea un obiect, clientul
invocă o operaţie a unui obiect fabrică de obiecte. Crearea întoarce o referinţă de
obiect;
• Prin serviciul de cataloage (directory service) – ambele Naming Service și Trading
Service permit obţinerea de referinţe, după nume, respectiv după proprietăţi;
• Prin conversia la/de la şiruri de caractere – o referinţă de obiect poate fi convertită
în şir de caractere şi înapoi în referinţă putând fi utilizată după conversie, atât timp
cât obiectul există11.
2.1.3. Limbajul de definire a interfeței (OMG IDL)
Pentru ca un obiect (client) să adreseze cereri unui obiect (server), acesta trebuie să
cunoască tipurile operaţiilor suportate de obiect. Acestea sunt precizate de specificaţia
interferenţei obiectului.
Pentru a realiza independenţa faţă de limbajul de programare în care este descris
obiectul, interfaţa este definită într-un limbaj neutru, IDL – Interface Definition Language.
Interfeţele sunt asemănătoare claselor în limbajul C++ şi interfeţelor în limbajul Java.
OMG IDL definește tipurile obiectelor prin specificarea interfețelor acestora. De
asemenea, dispune de mai multe declaraţii pentru: tipuri de bază (short, long, char, etc), tipuri
template (string, sequence), tipuri construite (struct, union, etc).
10 Common Object Request Broker Architecture: Core Specification, Object Management Group, Inc., 2004 11 Curs: Sisteme de Programe pentru Rețele de Calculatoare, Valentin Cristea, Facultatea de Automatică și
Calculatoare, UPB
Marian Adrian CEPOI Arhitectura CORBA
Page | 12
Figura 2.1.3. Declarații IDL
2.1.4. Maparea OMG IDL în limbaje de programare
Diferite limbaje de programare structurată sau orientate pe obiecte ar putea prefera să
acceseze obiectele CORBA în moduri diferite. Pentru limbajele orientate pe obiecte, poate fi
de dorit ca obiectele CORBA să fie văzute ca obiecte de limbaj de programare. Chiar pentru
limbaje de programare structurată, aceasta este o idee bună pentru a ascunde reprezentarea
exactă ORB a referinței obiectului, numele metodei, etc.
Există un limbaj de mapare care definește modul în care tipurile IDL sunt mapate pe
tipul sistem al limbajului țintă. Suplimentar, maparea specifică modul în care anumite interfețe
ORB trebuie să apară la programatorii care utilizează limbajul. Sunt definite astfel de mapari
cel puțin pentru limbajele: C, C++, Smalltalk, Ada.
O mapare particulară a OMG IDL pentru un limbaj de programare ar trebui să fie
aceeași pentru toate implementarile ORB. Limbajul de mapare include definirea tipurilor de
date specifice limbajului și interfețele de procedură pentru a accesa obiecte prin ORB. Acesta
include structura interfeței stub client (nu este necesară pentru limbaje orientate pe obiecte),
interfața invocare dinamică, scheletul de implementare, adaptoarele obiect și interfața ORB
directă.
Un limbaj de mapare definește, de asemenea, interacțiunea dintre invocațiile obiectului
și firele de control din client ori implementare. Cele mai frecvente mapări furnizează convorbiri
sincrone, în care se întoarce o rutină în cazul în care operațiunile obiectului sunt complete.
Mapările suplimentare pot fi furnizate pentru a permite inițierea unui apel, iar controlul să
revină programului. În astfel de cazuri, rutine suplimentare, specifice limbajului, trebuie să fie
furnizate pentru a sincroniza fire de control ale programului cu invocarea obiect12.
12 Common Object Request Broker Architecture: Core Specification, Object Management Group, Inc., 2004
Marian Adrian CEPOI Arhitectura CORBA
Page | 13
2.1.5. Adaptoare obiect (OA)
Un adaptor obiect este o funcționalitate a server-ului, ce oferă un mecanism pentru
implementări obiect CORBA cu scopul de a comunica cu ORB şi vice-versa.
Un adaptor obiect extinde, de asemenea, funcţionalitatea ORB. Este întins pe suprafaţa
ORB pentru a furniza o interfaţă între ORB şi implementarea obiectului.
Adaptoarele obiect pot fi de asemenea folosite pentru a furniza servicii specializate
optimizate pentru un mediu particular, platformă, sau implementarea unui obiect13.
Adaptorul de obiecte face ca o metodă a obiectului la distanță să fie invocabilă
clientului: face înregistrările implementărilor în depozit și le accesează la nevoie.
Unele dintre serviciile oferite de un adaptor obiect sunt:
- înregistrarea de implementări obiect ale server-ului;
- activarea și dezactivarea implementărilor de obiecte;
- instanțierea obiectelor în timpul rulării;
- generarea şi gestionarea referinţelor obiect;
- maparea referinţelor obiect la implementarea lor.
În timp ce multe implementări de adaptor obiect pot exista pentru situaţii unice, o
specificaţie CORBA necesită doar implementări pentru un Adaptor Obiect de Bază (BOA) sau
un Adaptor Obiect Portabil (POA), care este o versiune portabilă a BOA.
2.1.6. Interfața ORB
Interfața ORB este interfața care merge direct la ORB, care este aceeași pentru toate
ORB-urile și nu depinde de interfața obiectului sau a adaptorului obiect. Deoarece cea mai
mare parte a funcționalității ORB este asigurată prin intermediul adaptorului obiect, stub-uri,
skeleton, sau invocarea dinamică, există doar câteva operațiuni care sunt comune pentru toate
obiectele. Aceste operațiuni sunt utile atât clienților cât și implementării de obiecte.
Interfețele ORB sunt specificate în IDL cu o descriere în limba engleză a semanticilor
fiecărei operații definite pe interfață. Implementări diferite pot interpreta diferit specificația
redactată în engleză.
Interfața ORB furnizează un număr de operații care pot fi aplicate oricărui obiect.
Operațiile furnizate de interfața ORB includ:
- operații care acoperă referințele obiectelor la șiruri și invers;
- operații de release() și duplicate() pentru gestiunea memoriei utilizate de obiecte
și de referințele obiect;
- operația get_interface() necesară pentru interfața de stocare;
- operația de create_request() utilizată în conjuncție cu interfața de invocare
dinamică.
13 Curs: Medii de proiectare şi programare, Vasile Cioban, Universitatea Babes-Bolyai din Cluj-Napoca
Marian Adrian CEPOI Arhitectura CORBA
Page | 14
2.2. Exemple ORB
Există o mare varietate de implementări posibile în cadrul CORBA. Această secțiune
va ilustra unele dintre diferitele opțiuni. Rețineți că un anumit ORB poate sprijini mai multe
opțiuni și protocoale de comunicare.
Etapele de dezvoltare a aplicaţiei:
Figura 2.2. Paşii necesari pentru crearea unui server şi a unui client care comunică prin ORB.
1. Se definesc interfeţe în IDL; acestea precizează ce operaţii sunt disponibile la un server
şi cum pot fi invocate;
2. Conform descrierii IDL, un precompilator produce skeleton-uri (pentru server) şi stub-
uri (pentru clienţi). Când clientul şi obiectul ţintă sunt în acelaşi spaţiu de adrese,
comunicarea lor se poate face direct, nefiind necesar un cod suplimentar. Când aceştia
sunt în spaţii diferite, este necesar un cod suplimentar la client (stub) pentru
transmiterea invocărilor, şi la obiectul ţintă (skeleton), pentru recepţia lor şi
transmiterea lor către obiectul ţintă;
3. Se adaugă codul care implementează serverul;
4. Se face compilarea codului. Un compilator care acceptă CORBA este, în mod obişnuit,
capabil să genereze cel puţin trei fişiere:
- Fişiere import – care descriu obiectele pentru Interface Repository;
- Stub-uri client – pentru metodele definite în IDL; ele sunt invocate de clienţi pentru
acces la server;
- Skeleton-uri server – care apelează metodele serverului (mai sunt numite up-call
interfaces);
Marian Adrian CEPOI Arhitectura CORBA
Page | 15
5. Se leagă definiţiile de interfeţe de Interface Repository (se foloseşte un utilizator).
Informaţia din IR este accesibilă clienţilor la execuţie;
6. Adaptorul de obiecte înregistrează în Implementation Repository tipul şi referinţa
oricărui obiect ce poate fi instanţiat pe server. ORB foloseşte aceste informaţii pentru a
localiza obiectele active sau să ceară activarea unor obiecte;
7. Instanţierea obiectelor pe server – cerută de object adapter conform unei anumite
strategii.
La aceste etape se adaugă operaţiile legate de client14.
2.2.1. Server-based ORB
Pentru a centraliza managementul ORB, toți clienții și implementările pot comunica cu
unul sau mai multe servere a căror sarcină este de a ruta cereri de la clienți la implementări.
ORB ar putea fi un program normal în ceea ce privește sistemul de operare de bază, iar IPC
normală ar putea fi utilizată pentru a comunica cu ORB.
2.2.2. System-based ORB
Pentru a spori securitatea, robustețea, și performanța, ORB ar putea fi furnizat ca un
serviciu de bază al sistemului de operare. Referințele ar putea fi falsificate, reducând
cheltuielile de autentificare pentru fiecare cerere. Deoarece sistemul de operare poate ști locația
și structura clienților și implementărilor, ar fi posibil pentru o varietate de optimizări să se
implementeze, de exemplu, evitarea colectării atunci când ambele sunt pe aceeași mașină.
2.2.3. Library-based ORB
Pentru obiectele care sunt ușoare și ale căror implementări pot fi partajate,
implementarea ar putea fi de fapt, într-o bibliotecă. În acest caz, taloanele ar putea fi metodele
actuale. Acest lucru presupune că este posibil ca un program client să aibă acces la datele
obiectelor și că implementarea are încredere în client pentru a nu deteriora datele15.
14 Curs: Sisteme de Programe pentru Rețele de Calculatoare, Valentin Cristea, Facultatea de Automatică și
Calculatoare, UPB 15 Common Object Request Broker Architecture: Core Specification, Object Management Group, Inc., 2004
Marian Adrian CEPOI Arhitectura CORBA
Page | 16
2.3. Structura implementării unui obiect
O implementare obiect oferă starea și comportamentul unui obiect real. Implementarea
obiectului poate fi structurată într-o varietate de moduri. Pe langă definirea metodelor pentru
operațiunile în sine, o implementare va defini, de obicei, procedurile de activare și dezactivare
a obiectelor și va folosi alte obiecte sau facilități non-obiect pentru a face starea obiectului
persistentă, pentru a controla accesul la obiect, precum și pentru a implementa metodele.
Implementarea obiectului (a se vedea figura 2.3.), interactionează cu ORB într-o
varietate de moduri pentru a-și stabili identitatea, de a crea noi obiecte, și de a obține servicii
dependente de ORB. Ea face acest lucru în primul rând prin intermediul accesului la un adaptor
obiect, care oferă o interfață pentru serviciile ORB și care este convenabil pentru un anumit stil
de implementare obiect.
Figura 2.3. Structura unei implementări tipice a obiectului
Datorită gamei de posibile implementări obiect, este dificil de a fi definitiv cu privire
la modul în care este structurată o implementare obiect.
Atunci când are loc o invocare, nucleul ORB, adaptorul obiect, și skeleton asigură că
este făcut un apel la metoda adecvată implementării. Un parametru a-l acestei metode indică
obiectul invocat, care metodă se poate utiliza pentru a localiza datele obiectului. Parametri
suplimentari sunt furnizați în conformitate cu definiția skeleton.
Atunci când este creat un obiect nou, ORB poate fi anunțat astfel încât să știe unde să
găsească aplicare pentru acel obiect. De obicei, punerea în aplicare, de asemenea, se
înregistrează ca implementarea obiectului unei anumite interfețe, și specifică modul în care
începe implementarea în cazul în care aceasta nu este deja în execuție.
Cele mai multe implementări obiect asigură comportamentul lor, folosind facilități în
plus față de ORB și adaptorul obiect. De exemplu, deși adaptorul obiect portabil oferă unele
date persistente asociate cu un obiect (OID sale sau Object ID), această sumă relativ mică de
date este de obicei folosită ca un identificator pentru datele obiectelor reale stocate într-un
serviciu de depozitare a implementării obiectului ales16.
16 Common Object Request Broker Architecture: Core Specification, Object Management Group, Inc., 2004
Dragos Ciprian ENOIU INTEROPERABILITATEA
Page | 17
III. INTEROPERABILITATEA
3.1. Elementele interoperabilitatii
Elementrele interoperabilitatii sunt urmatoarele :
Arhitectura interoperabila ORB
Suportul Inter-ORB Bridge
Protocolul General si Internet inter-ORB
In plus, arhitectura se acomodeaza cu protocoale specifice inter-ORB (ESIOPs) ce
sunt optimizate pentru medii specifice cum sunt cele DCE.
3.1.1. Arhitectura interoperabilitatii ORB
Arhitectura interoperabila ORB overa un cadru conceptual pentru definirea
elementelor de interoperabilitate si pentru identificarea punctelor sale de conformitate.
Desemenea, caracterizeaza noi mecanisme si specifica conversatii necesare pentru a stabili
interoperabilitatea intre ORB-urile produse in mod independent.
In mod specific, arhitectura introduce conceptul de immediate si mediated bridging
pentru domeniile de ORB. Protocolul de internet inter-ORB formeaza o baza comunca pentru
mediate bridging. Suportul pentru inter-orb bridge poate fi folosit pentru a implementa atat
immediate bridges si sa contruiasca “jumatati de bridges” pana la domeniile de mediated
bridge.
Folosirea tehnicilor de bridging, ORB poate interopera fara a sti detalii despre
implemantarea ORB, cum sunt protocoalele implementate de specificarile CORBA.
IIOP poate fi folosit in bridging doua sau mai multe ORB-uri implementant “jumatati
de bridges” ce comunica folosind IIOP. Aceasta abordare functioneaza pentru retele ce
folosesc un ESIOP si pentru versiunile de stand-alone ale ORB-ului.
IIOP ar putea fi folosit deasemenea pentru a implementa un sistem de mesajerie daca
dorim. Deoacere ORB-ul nu necesita folosirea internala a IIOP-ului.
Dragos Ciprian ENOIU INTEROPERABILITATEA
Page | 18
3.1.2. Suportul Inter-ORB Bridge
Arhitectura interoperabila identifica intrun mod clar rolul a diferitelor modele a
domeniilor ORB specifice informatiei. Astfel de domenii pot include obiecte de referinte,
tipuri de domenii, domenii de securitate, domeniu de tranzactie si multe altele.
Cand doua ORBuri sunt in acelasi domeniu, acestea pot comunica intrun mod direct.
In multe cazuri, acest lucru este de dorit. Acest lucru nu este adevarat tot timpul, totusi,
deoarece organizatiile trebuie sa stabilieasca domenii de control locale.
Cand informatia trebuie sa paraseasca domeniul ei, invocatia trebuie sa traverseze un
pod. Rolul podului este sa asigure semantica si continutul ce este mapate de la un ORB
specific astfel utilizatorii al oricarui ORB sa vada doar continutul si semantica potrivita.
Deoarece extensiile necesita suportul Inter-ORB Bridges sunt in mod general in
natura, ele nu au impact in alte operatii ORB si pot fi folosite pentru alte scopuri pe langa
constructia de poduri, ele sunt potrivite pentru tot suportul ORB-ului. Alte aplicatii includ
depanarea, interpostarea obiectelor, implementarea obiectelor cu interpreti si limbaj de
scriptare si implementari generate in mod dinamic.
Suportul inter-ORB bridge poate fi folosit pentru a oferi interoperabilitatea cu sisteme
diferite de cele CORBA cum ar fi Microsoft Component Object Model (COM). Usurinta
acestui lucru va depinde de extensia sistemelor conform modelul obiect CORBA.
3.1.3. General Inter-ORB Protocol (GIOP)
Protocolul General Inter-ORB (GIOP) specifica standardul de sintaxa a transferului si
un set de mesaje de tip format pentru comunicatii intre ORB-uri. GIOP-ul este specific
construit pentru ORB pentru interactiuni de tip ORB si este creat pentru a lucra direct peste
orice protocol de transport orientat pe conexiune ce atinge un set minimal de ipoteze.
Protocolul este simplu, scalabil si in mod general usor de implementat. Este creat pentru
permite implementari portabile cu memorii mici si pentru performante rezonabile cu o
dependenta minimala pentru software ce suporta alt layer de transport.
In timp ce versiunile a GIOP ului ruleaza pe diferite straturi de transport ce nu sunt in
mod direct interoperabile, elementele lor comune ar permite folosirea eficienta a podetelor
intre domeniile de retelistica.
Dragos Ciprian ENOIU INTEROPERABILITATEA
Page | 19
3.1.4. Internet Inter-ORB Protocol (IIOP)
Protocolul de Internet Inter-ORB specifica cum mesajele GIOP sunt schimbate
folosind conexiunile TCP/IP. IIOP specifica protocolul standardizat de interoperabilitate
pentru internet, ofera o interoperare iesita din comun cu alte ORBuri compatibile bazate pe
cele mai populare produse si vanzatori neutrali pe stratul de transport. Poate fi folosit si
protocoale intre jumatati de punti.
Protocolul a fost creat pentru a fi adecvate si corespunzatoare pentru folosirea oricarui
ORB pentru interoperare in domeniile protocoalelelor de internet doar daca un alt protocol
alternativ este dorit de un model specific sau un mediu de operare destinat ORBului. In acest
sens este reprezentat protocolul inter-ORB pentru mediul TCP/IP, un strat de transport
universal.
Relatiile intre IIOP si GIOP sunt similare unui limbaj de mapare specific OMG IDL;
GIOP ar putea fi mapat intrun numar diferit de transporturi si sa specifice protocoalele ce
sunt mapate intrun mod comun.Totusi, GIOPul in sine nu ofera interoperabilitate completa,
cum un IDL nu poate fi folosit sa contruiasca programe complete. IIOPul si alte mapari
similare sunt realizari solide a definitiilor abstracte ale GIOPului.
Fig 3.1.4 Relatiile Protocolului Inter-ORB.
Dragos Ciprian ENOIU INTEROPERABILITATEA
Page | 20
3.2. Exemple de solutii ale interoperabilitatii
Elementele interoperabilitatii (puntile Inter-ORB, protocoalele General and Internet
Inter-ORB) pot fi combinate intro varietate de moduri pentru a satisface un produs particular
si necesitatile cumparatorului. Oferim cateva exemple.
Ex1.
Produsul ORB “A” este creat pentru a ajuta obiecte distribuite intr o retea si ofera
interoperabilitate cu ORBuri compatibile de la alti comercianti. In plus ofera cladirea puntilor
catre el si alte ORBuri ce sunt specifice mediului sau protocoale proprietatilor. Pentru a
atinge acesc lucru, ORBul “A” foloseste IIOP si ofera suport pentru puntea inter-ORB.
Ex2.
Produsul ORB “B” este creat pentru a oferi suport optimizat de inalta viteza pentru un
obiect localizat pe o singura statie. De exemplu, sa suporte mii de obiecte GUI Fresco
operate pe viteze diferite. In plus, unele obiecte vor avea nevoie de acces de la alte masini si
obiecte aflate pe alte masini ce vor fi accesate intrun mod des. Pentru a realiza acest lucru,
ORB “A” ofera suport de tip “jumatate de punte” la IOP pentru comunicari cu alte ORBuri
distribuite.
Ex3.
Produsul ORB “C” este optimizat pentru a lucra in particular in medii de operare.
Foloseste un protocol de mediu specific bazat pe serviciile distribuite computerizate ce sunt
valabile in mod comun pe site. In plus, ne asteptam ca ORBul “C” sa interopereze cu alte
ORBuri de la alti producatori. Pentru a se ajunge la acest lucru, ORBul “C” ofer suport inter-
ORB bridge si un produs de tip half-bridge (oferit de un vanzator ORB sau alt sistem third-
party) ofera o conexiune altor ORBuri. Jumatatile de poduri folosesc de IIOP pentru a oferi
interoperabilitate cu alte ORBuri compatibile.
3.3. Factori de motivare
In aceasca sectiune vom explica factorii ce motiveaza crearea specifica a
interoperabilitatii.
Dragos Ciprian ENOIU INTEROPERABILITATEA
Page | 21
3.3.1. Diversitatea implementarii ORB
Astazi, sunt multe produse ORB diferite ce se adreseaza unei game largi de necesitati
a utilizatorilor. O gama larga de tehnici de implementare este necesara in mod evident. De
exemplu, timpul pentru o cerere poate varia la o magnitudine de 5 ordine de marime, de la
cateva microsecunde la cateva secunde. Unele ORBuri au securitate de nivel inalt, altele sunt
mult mai deschise publicului. Unele ORBuri sunt stratificate pe un protocol folosit intrun
mod particular des, altele sunt optimizate puternic cum sunt protocoalele de proprietare.
Piata pentru sistemele de tip obiect si aplicatii ce le folosesc pentru a creste ca obiect
de sistem sunt capabile de a aplica mai multe tipuri de computerizare. De la aplicatii integrate
cu procese de control, de la sisteme de operare cuplate slab pana la superreteaua de
informatie, sistemele obiect bazate pe CORBA pot fi infrastructura comuna.
3.3.2. Limitele ORB
Chiar si atunci cand nu este necesara implementarea diferentiala, sunt alte motive
pentru a partitiona un mediu in ORBuri diferite.
Din motive de securitate, este important sa stim ca nu este in mod general posibil sa
accesam obiecte intrun domeniu din altul. De exemplu, un Internet ORB ar putea sa faca
publica informatia dar un ORB dintro companie va dori sa restrictioneze informatia, aceste
doua ORBuri ar fi separate astfel incat compania sa acceseze obiectele publice din interiorul
companiei fara a permite acces la obiectele private din interior. Chiar daca obiectele
individuale ar trebui protejate, administratorii de sistem prudenti vor dori sa evite expunerea
obiectelor delicate la atacuri din afara companiei.
Suportul mai mulot ORBuri ajuta, deasemenea, la manevrarea problemelor dificile
pentru testare si de upgrade obiectul sistemului. Ar fi nefiresc sa testam o noua infrastructura
fara a limita un set de obiecte ce ar putea fi avariate de bugs(erori) si ar fi nepractic sa
inlocuim “ORBul” de peste tot simultan. Un nou ORB ar putea fi testat si plasat in acelasi
mediu, interoperand cu ORBul existent pana cand fie un buton este creat in mod complet fie
pana cand unul din ORBuri il inlocuieste pe celalalt.
Problemele managementului ar putea motiva partitionarea unui ORB. Cum si retelele
sunt subdivizate in domenii ce permit controlul bazelor de date necentralizat, configurare de
resurse, managementul starii unui ORB.
Dragos Ciprian ENOIU INTEROPERABILITATEA
Page | 22
3.4. Design-ul interoperabilitatii
Datorita diversitatii implementarilor ORB, mai multe abordari sunt necesare
interoperabilitatii. Optiunile identificate in versiunile de CORBA precedente includ :
Protocoale de Translatie, unde un gateway aflat undeva in hartile sistemului,
necesita de la formatul folosit de un ORB la unul folosit de altul.
Referintele Integrate unde invocarea folosindu-se un obiect referinta nativ trimite
un obiect special a carui munca este sa trimita o invocare de la un ORB la altul.
ORBuri Alternative unde implementarile ORB sunt deacord sa coexiste in acealasi
spatiu de adrese atat de usor ca un client sau o implementare sa le poate folosi
intrun mod transparent si sa treaca de referintele obiectului create de un ORB la
altul fara a pierde functionalitate.
In general nu este un singur protocol ce poate satisface necesitatile tuturora si nu este
o modalitate de a interopera intre doua protocoale diferite. Sunt multe medii in care
protocoale multiple exista si sunt cai de a crea punti intre medii ce nu au protocoale in
comun.
Aceasca specificare adopta o arhitectura flexibila ce permite o varietate larga de
implementari ORB pentru a incorpora atat protocolul comun de elemente cat si cel de
bridging.
Urmatoarele teluri ne ghideaza la crearea specificata a interoperabilitatii :
Arhitectura si specificarea ar trebui sa permita performante inalte, cai scurte si
solutii de interoperabilitate usoare
Designul ar trebui sa fie scalat, sa nu fie greu de implementat si nu ar trebui sa
restrictioneze alegerile implementarii intrun mod inutil.
Solutiile de interoperabilitate ar trebui sa functioneze cu orice comerciant ce ofera
implementari ORB ce respecta modelul CORBA; aceste implementari sunt
diverse.
Toate operatiile implicate de modelul obiect CORBA ar trebui sa fie suportate
Page | 23
BIBLIOGRAFIE
1. Curs: Sisteme de Programe pentru Rețele de Calculatoare, Valentin Cristea, Facultatea
de Automatică și Calculatoare, UPB;
2. Curs: Programarea rețelelor de calculatoare, Ioan Jurca, Universitatea Politehnica din
Timișoara;
3. Sisteme distribuite – Tehnologii, Dana Petcu, Universitatea de Vest din Timișoara, 2009;
4. Curs: Medii de proiectare şi programare, Vasile Cioban, Universitatea Babes-Bolyai din
Cluj-Napoca;
5. Laborator: Sisteme de Programe pentru Rețele de Calculatoare, Valentin Cristea,
Facultatea de Automatică și Calculatoare, UPB;
6. Common Object Request Broker Architecture: Core Specification, Object Management
Group, Inc., 2004;
7. http://www.site.uottawa.ca/~tcl/gradtheses/mnojoumian/ThesisFiles/FinalSpec/CORBA.p
df
8. http://www.ing.iac.es/~docs/external/corba/CorbaServices.pdf
9. http://en.wikipedia.org/wiki/Distributed_computing