1 / 48

CORBA

CORBA. Ce este CORBA?. Common Object Request Broker Architecture Infrastructura de comunicatii pentru obiectele distribuite Permite colectiilor de obiecte distribuite si eterogene sa colaboreze intr-un mod transparent. La ce este serveste CORBA ?. Dezvoltarea de aplicatii distribuite

Download Presentation

CORBA

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CORBA

  2. Ce este CORBA? • Common Object Request Broker Architecture • Infrastructura de comunicatii pentru obiectele distribuite • Permite colectiilor de obiecte distribuite si eterogene sa colaboreze intr-un mod transparent

  3. La ce este serveste CORBA ? • Dezvoltarea de aplicatii distribuite • Localizarea obiectelor de tip remote in cadrul unei retele • Trimiterea de mesaje catre aceste obiecte • Ofera o interfatare comuna pentru tranzactii, securitate, etc.

  4. De ce aplicatii distribuite? • Datele sunt distribuite • Din motive administrative si de apartenenta • Utilizarii sistemelor eterogene • Impartirii acestora de catre mai multe aplicatii

  5. De ce aplicatii distribuite? • Calculele sunt distribuite • Scalabilitate: multiprocesare • Arhitecturi heterogene • Utilizatorii sunt distribuiti • Utilizatori multipli care interactioneaza si comunica prin aplicatiile distribuite

  6. Sisteme de obiecte distribuite • Toate entitatile sunt modelate ca obiecte • Sistemele suporta transpanenta locala • Interfetele si nu implementarile definesc obiectele • Sistemele de obiecte distribuite sunt deschise

  7. Avantaje CORBA • Independenta de sistemul de operare si de limbajul de programare • Integrarea apliactiilor existente • Infrastructura bogata in obiecte distribuite • Transparenta locatiei. • Transparenta retelei. • Interfata de invocare dinamica

  8. Dezavantaje CORBA • Investitie initiala ridicata. Aplicatiile bazate pe CORBA necesita investitii enorme in ceea ce priveste trainingul si lansarea arhitecturii, chiar si pentru aplicatii de dimensiuni mici. • Disponibilitatea serviciilor CORBA. Serviciile obiect specificate de OMG lipsesc inca in produse care implementeaza conceptele. • Scalabilitatea. Datorita naturii strans cuplate a arhitecturii CORBA orientate pe legaturi, scalabilitatea inalta asteptata in aplicatiile companiilor poate sa nu fie atinsa.

  9. Ce este OMG? • Producatorii CORBA • Consortiu de 700+ companii • Nu este inclus Microsoft (DCOM ) • Membri: • Vanzatorii de platforme • Vanzatorii de baze de date • Dezvoltatorii de utilitare software • Corporatiile dezvoltatoare • Vanzatorii de aplicatii software

  10. Este doar o SPEC*-ulatie • Nu a fost niciodata implementat integral • Probabil nici nu va fi • Industria se misca repede iar SPEC trebuie sa tina pasul • Interoperabilitate vs. portabilitate • Transmiterea parametrilor se face prin valoare *Standard Performance Evaluation Corporation

  11. O simpla arhitectura CORBA Server Client response request ORB ORB “Object Bus”

  12. Obiecte CORBA • Exemple • Servicii • Clienti • Componente • Obiecte de tip business • Obiectele CORBA se apropie de o accesibilitate universala • Orice limbaj • Orice host din retea • Orice platforma

  13. Elemente CORBA • 1. ORB • 2. servicii CORBA • 3. facilitati CORBA • 4. obiecte aplicatie

  14. Object Request Broker (ORB) • ORB este o componenta software care mediatizeaza transferul de mesaje de la un program la un obiect aflat pe un host la distanta, din retea.

  15. ORB • Asigura comunicarea intre obiecte • Fiecare host (PC) are ORB-ul propriu • ORB-urile stiu sa comunice unele cu altele • ORB deasemenea asigura clientului servicii de baza

  16. Rersponsabilitati ORB • Gaseste implementarea obiectului corespunzator cererii (request) • Pregateste implementarea obiectului pentru a putea primi cererea • Comunica datele din cadrul cererii • Salveaza datele unei cereri

  17. Reteaua ORB-urilor • Exista un ORB si pe server • ORB-ul primeste cererile

  18. IIOP • Internet Inter-Orb Protocol • IIOP defineste coloana de sustinere ORB, prin care fiecare ORB poate lega si oferi inter-operatii ale serviciilor sale asociate • Utilizeaza protocolul TCP/IP

  19. ORB - Caracteristici • Invocarile de metode • Statice si Dinamice • Obiecte la distanta sau servicii CORBA • Legaturi in cadrul limbajelor de nivel inalt • Se poate utiliza orice limbaj; ORB il va “traduce” • Auto-descriptiv • Asigura metadata pentru toate obiectele si serviciile

  20. ORB - Caracteristici • Local sau la distanta • Acelasi API indiferent de locul unde se gaseste obiectul tinta • Conserva contextul • Securitate si tranzactii distribuite • Coexistenta cu codul mostenit • Decat asigura impachetarea obiectului

  21. Ce este de fapt un ORB ? • Nu este un proces separat • Cod al unei biblioteci care se executa in timpul procesului • Asculta conexiunile la porturile TCP • Un port pentru fiecare obiect • Deschide socketurile TCP pentru alte obiecte • N porturi pentru statia de calcul de la distanta

  22. Stubs si Skeletons • Stub • Se afla pe client • Se presupune a fi un obiect remote • Skeleton • Se afla pe server • Primeste requesturi de la stub • Comunica cu adevaratul obiect remote • Livreaza raspunsul catre stub

  23. Stubs si Skeletons -> Independenta fata de Platforma • Codul client nu are cunostinte de implementarea obiectului sau care ORB este utilizat pentru accesarea implementarii

  24. Stubs si Skeletons (Fig.) Client Host Machine Server Host Machine Client Object Remote Object Stub Skeleton IIOP ORB ORB

  25. Interface Definition Language (IDL) • Interface Definition Language • Defineste un protocol pentru a putea accesa obiectele • Este asemanatoare unui contract • Este bine specificata • Independenta de limbajul utilizat

  26. Interface Definition Language (IDL) (Cont.) • Este un limbaj pur descriptiv. • Permite dezvoltatorilor sa descrie o interfata pe care sa o foloseasca de la distanta, intr-o maniera independenta de limbaj. • Este necesar un compilator specific fiecarui limbaj participant (ex. Idlj pentru Java) • Creaza fisierele necesare fiecarui limbaj pentru taskurile legate de CORBA.

  27. Client vs. Server • in cazul CORBA, un client este un client relativ la obiect specific • Este un obiect cu o referinta catre un obiect “server” • Un client se poate comporta de asemenea ca server • Daca are un IDL, stubs si skeletos • Tehnic vorbind, un server CORBA contine unul sau mai multe obiecte CORBA

  28. Diferite intelesuri pentru termenul de “Server” • Sistemul host • Program care ruleaza pe un host • Obiect CORBA ce ruleaza in cadrul unui program • are IDL, stub, skeleton • Uneori este numit si Servant

  29. Modul de lucru CORBA • 1. Scrie un fisier IDL care descrie interfata obiectului distribuit • 2. Se ruleaza idlj pe fisierul IDL. Acesta genereaza codul Java care implementeaza stubul si skeletonul • 3. Se ruleaza nameserverul • 4. Implementeaza servantul (interfata IDL) • 5. Implementeaza serverul (inregistreaza servantul cu serviciul si asteapta cereri) • 6. Implementeaza clientul • 7. Ruleaza serverul • 8. Ruleaza clientul

  30. Exemplu de IDL • Se compileaza codul IDL cu idlj. Acesta creaza fisierele sursa java in pachetul Tracker. • idlj -fclient -fserver –oldImplBase Tracker.idl module Tracker { interface Time { string getTime(); }; };

  31. Idlj: Rezultatul compilarii IDL cu java • Idlj genereaza niste cod sursa in directorul Tracker. • _TimeStub (stubul pentru client) • Time (interfata pentru obiectul distribuit) • TimeHelper (helper) • TimeHolder (serializare & comunicatii; parametri in & inout) • TimeOperations (implementarea initiala a serverului) • _TimeImplBase (clasa de baza pentru servant)

  32. Pornirea nameserver-ului • CORBA utilizeaza o tehnica similara cu cea a registrului RMI. Serverele se inregistreaza cu nameserverul iar clientii cer acestuia sa gaseasca serverul • orbd –ORBInitialPort <myPort> Exemplu: orbd –ORBInitialPort 900 • Aceasta este inlocuitorul vechiului Tnsnameserver • myPort trebuie sa corespunda cu proprietatile utilizate in gasirea nameserverului in cadrul clientului si serverului

  33. Codul Client • Asemanator cu RMI • Detine referinta catre obiectul remote • Apeleaza metodele asupra obiectului via obiectul local proxy • Pe de alta parte, exista unele dificultati datorita background-ului multi-limbaj al CORBA

  34. Client.java: package ex1; import Tracker.*; // The package containing our stubs. import org.omg.CosNaming.*; // Client will use the naming service. import org.omg.CORBA.*; // All CORBA applications need these classes. public class Client { public static void main (String args[]) { try { // Create and initialize the ORB ORB orb = ORB.init (args, null); // Get the root naming context org.omg.CORBA.Object objRef = orb.resolve_initial_references ("NameService"); NamingContext ncRef = NamingContextHelper.narrow (objRef); // Resolve the object reference in naming NameComponent nc = new NameComponent ("TimeServer", ""); NameComponent path[] = {nc}; Time timeRef = TimeHelper.narrow (ncRef.resolve (path)); // Call the time server object and print results String time = "Time on the Server is " + timeRef.getTime (); System.out.println (time); } catch (Exception e) { e.printStackTrace (); } } }

  35. Codul Server De partea serverului se afla codul serverului si codul servantului. Codul servantului reprezinta implementarea obiectului. Codul serverului contine unul sau mai multi servanti.

  36. Codul servantului package ex1; // The package containing our stubs. import Tracker.*; // Server will use the naming service. import org.omg.CosNaming.*; // The package containing special exceptions thrown by the name service. import org.omg.CosNaming.NamingContextPackage.*; // All CORBA applications need these classes. import org.omg.CORBA.*; import java.util.*; import java.text.*; class TimeServer extends _TimeImplBase{ public String getTime (){ SimpleDateFormat formatter = new SimpleDateFormat ("MMMMM dd, yyyyy GGG, hh:mm:ss:SSS aaa"); Date date = new Date (); return formatter.format ( date ); } }

  37. Codul serverului Codul serverului exexuta urmatoarele: • Creaza un nou obiect servant • Inregistreaza servantul cu serviciul • Asculta cererile ce trebuie sa soseasca

  38. Codul serverului package ex1; // The package containing our stubs. import Tracker.*; // Server will use the naming service. import org.omg.CosNaming.*; // The package containing special exceptions thrown by the name service. import org.omg.CosNaming.NamingContextPackage.*; // All CORBA applications need these classes. import org.omg.CORBA.*; public class Server { public static void main (String args[]) { try { // Create and initialize the ORB ORB orb = ORB.init (args, null); // Create the servant and register it with the ORB TimeServer timeRef = new TimeServer (); orb.connect (timeRef); // Get the root naming context org.omg.CORBA.Object objRef = orb.resolve_initial_references ("NameService"); NamingContext ncRef = NamingContextHelper.narrow (objRef); // Bind the object reference in naming NameComponent nc = new NameComponent ("TimeServer", ""); NameComponent path[] = {nc}; ncRef.rebind (path, timeRef); // Wait forever for current thread to die Thread.currentThread ().join (); } catch (Exception e) { e.printStackTrace (); } } }

  39. Rezumatul procesului de compilare

  40. Servicii CORBA • API de nivel scazut, taskuri obisnuite • Life Cycle Service • creare, copiere, mutare, stergere obiecte • Naming Service • Inregisreaza obiectele cu un nume simbolic • Cauta obiectele dupa nume

  41. Servicii CORBA • Serviciu de control concurential • Obtine si elibereaza blocarile exclusive pentru asigurarea unui acces serializabil la obiecte • Serviciu tranzactional • Coordonarea accesului la obiecte • Persistence Service • Depozitarea obiectelor intr-o multitudine de baze de date • RDBMS (Relational DataBase Management System ), OODBMS (object-oriented database management systems ), sisteme de fisiere

  42. Servicii CORBA • Serviciu de securitate • Autentificari, ACL (access control list), criptari, etc. • Servicii eveniment • Notificari necuplate

  43. Servicii CORBA • Relationare - asigura relatii de tip n-ar intre obiectele CORBA • Externalizare –coordoneaza transformarea obiectelor CORBA catre si dinspre exterior • Interogare –suporta interogari pentru obiecte • Proprietati –suporta asocierea de perechi nume-valoare cu obiectele CORBA • Trader –suporta gasirea obiectelor CORBA bazate pe proprietati ce descriu serviciul oferit de obiect

  44. Facilitati CORBA • Asigura framework-uri pentru aplicatiile specializate • Faciliteaza componenta de documente distribuite • OpenDoc • In lucru: • Agenti • Business Objects • Internationalizare

  45. CORBA intr-un singur slide

  46. Application objects CORBA domains CORBA facilities Object Request Broker CORBA services Rolul CORBA si al ORB sunt definite in Object Management Architecture Exista 4 categorii de obiecte incluse in OMA.

  47. Cele 4 categorii ale OMA: • servicii CORBA: creare/mutare de obiecte, interogari/tranzactii, controlul concurentei, servicii director • domeniile CORBA sunt standarde ale “pietii verticale”. De exemplu: financial, medical, telecomunicatii si manufacturing • facilitatile CORBA includ documente compuse si managementul sistemului. Ambele se pot aplica peste multiple domenii verticale pentru functionalitati aditionale • Aplicatii: interfete particulare si definite de utilizator

  48. Rezultatul: • programatorul este liber sa realizeze sistemul asa cum vor; ORB defineste protocolul aplicatiei via IDL • programatorul este liber sa aleaga limbajul de programare, mediul si sistemul de operare • ORB permite integrarea componentelor existente intr-o arhitectura a unei retele de obiecte • este posibila integrarea sistemelor existente cu produse off-the-shelf

More Related