La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Università La Sapienza Ingegneria del Software I 1 Ingegneria del software I Seminario1:CORBA.

Presentazioni simili


Presentazione sul tema: "Università La Sapienza Ingegneria del Software I 1 Ingegneria del software I Seminario1:CORBA."— Transcript della presentazione:

1 Università La Sapienza Ingegneria del Software I 1 Ingegneria del software I Seminario1:CORBA

2 Università La Sapienza Ingegneria del Software I 2 Introduzione CORBA (Common Object Request Broker Architecture) Definita da OMG (Object Management Group) Incapsulamento per la comunicazione tra applicazioni diverse

3 Università La Sapienza Ingegneria del Software I 3 Architettura

4 Università La Sapienza Ingegneria del Software I 4 Elementi IDL ORB –Nasconde locazione fisica oggetti interagenti –Permette: invocazione, attivazione, … –Interfacce ORB: Object Adapter Dynamic Invocation Interface Repository GIOP (General Inter-ORB Protocol) –Nasconde locazione fisica di oggetti in ORB diversi COS (CORBA Object Services) –Naming services, Transaction services, …

5 Università La Sapienza Ingegneria del Software I 5 Interface Definition Language Definisce operazioni utilizzabili su un oggetto. Ha proprio sistema di tipi Compilato verso linguaggi principali

6 Università La Sapienza Ingegneria del Software I 6 Esempio Interfaccia oggetto conto corrente bancario Interface Conto { attribute string numeroConto; void deposito(int long ammontare); void prelievo(int long ammontare); long saldo(); };

7 Università La Sapienza Ingegneria del Software I 7 Tipi Primitivi in IDL Interi Float Booleani Caratteri Stringhe Object Reference Any

8 Università La Sapienza Ingegneria del Software I 8 Tipi Costruiti in IDL Struct Union Array, Sequences (con lunghezze fisse o variabili) Enum

9 Università La Sapienza Ingegneria del Software I 9 Compilazione IDL Compilatore riceve descrizione IDL e genera interfacce nel linguaggio di implementazione Specifiche Language Mapping (IDL-Linguaggio impl.) Genera: –Stub (lato client) –Skeleton (lato server)

10 Università La Sapienza Ingegneria del Software I 10 Stub –Interfaccia del client per richiedere servizi 1.Client invoca localmente lo Stub 2.Lo Stub impacchetta (marshalling) i dati di invocazione del messaggio 3.Il messaggio viene consegnato allORB 4.LORB lo invia al server

11 Università La Sapienza Ingegneria del Software I 11 Skeleton Implementazione oggetto lato server Scheletro delloggetto con sezioni parti da implementare Coopera con Object Adapter per attivazione delloggetto Riceve richiesta dallObject Adapter, estrae i dati (unmarshalling) e li passa allimplementazione delloggetto

12 Università La Sapienza Ingegneria del Software I 12 Comunicazione locale

13 Università La Sapienza Ingegneria del Software I 13 Object Adapter Si occupa di attivare gli oggetti 1.Il client mediante stub invoca metodo dellORB 2.ORB notifica invocazione allOA che attiva implementazione 3.Implementazione si registra e si dichiara pronta 4.OA passa invocazione allo skeleton che spacchetta i parametri e li fornisce allImplementazione 5.Implementazione esegue metodo, restituisce parametri al client mediante skeleton che gestisce anche eccezioni

14 Università La Sapienza Ingegneria del Software I 14 Portable Object Adapter Gestisce le risorse lato server Stabilisce politiche di memorizzazione e attivazione degli oggetti Gestisce persistenza

15 Università La Sapienza Ingegneria del Software I 15 Interazione

16 Università La Sapienza Ingegneria del Software I 16 Esempio interazione client-server 1.Scrittura interfaccia IDL 2.Compilazione interfaccia 3.Scrittura implementazione 4.Scrittura del server 5.Scrittura del client Classi lato ClientClassi lato ServerClassi di supporto _ContoStub.javaContoPOA.javaContoHelper.java Conto.javaContoPOATie.javaConto Holder.java ContoOperations.java

17 Università La Sapienza Ingegneria del Software I 17 Classi Le classi lato client e lato server formano rispettivamente Stub e Skeleton Le classi di supporto vengono utilizzate sia dal client che dal server sono proprie del mapping idl2java in questo caso –Helper: funzioni di utilità per le gestione oggetti –Holder: gestione parametri in uscita, non presente in java

18 Università La Sapienza Ingegneria del Software I 18 Implementazione oggetto Conto public class ContoImpl extends ContoPOA { private int _saldo; private String _numeroConto; public ContoImpl(String arg) { _saldo = 0; _numeroConto = arg; } public void deposito(int amount) { _saldo += amount; } public int prelievo(int amount) { _saldo -= amount; return _saldo; } public int saldo() { return _saldo; } String numeroConto() { return _numeroConto; } void numeroConto(String arg) { _numeroConto = arg; }

19 Università La Sapienza Ingegneria del Software I 19 Classe Server public class Server { public static void main( String[] args ) { // Inizializzazione ORB org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args, null); try { // Creazione riferimento al POA org.omg.PortableServer.POA poa = org.omg.PortableServer.POAHelper.n arrow(orb.resolve_initial_refe rences("RootPOA")); // Attivazione oggetto nel POA org.omg.CORBA.Object o = poa.servant_to_reference(new ContoImpl("0393")); poa.the_POAManager.activate(); // Pubblicazione OR in un file PrintWriter ps = new PrintWriter(new FileOutputStream(new File( args[0] ))); ps.println( orb.object_to_string( o ) ); ps.close(); } catch ( Exception e ) { e.printStackTrace(); } // Attivazione ORB orb.run(); }

20 Università La Sapienza Ingegneria del Software I 20 Classe Client public class Client { public static void main(String args[]) { try { // Inizializzazione dellORB org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args,nu ll); // Dichiarazione della variabile per loggetto Conto contoBancario; // Reperimento dellObject Reference da file BufferedReader in = new BufferedReader(new FileReader(args[0])); String IORString = in.readline(); // Creazione riferimento remoto alloggetto contoBancario = ContoHelper.narrow(orb.string_to_o bject(IORString)); // Invocazione operazioni sulloggetto contoBancario.deposito(2000); contoBancario.prelievo(200); System.out.println("Il saldo del conto" + contoBancario.numeroConto() + "è: " + contoBancario.saldo()); } catch (Exception e) { e.printStackTrace(); }

21 Università La Sapienza Ingegneria del Software I 21 Dynamic Invocation Interface Nell'esempio: collegamento statico tra client e server, codice oggetto server conosciuto dal client a tempo di compilazione Per costruire collegamenti dinamici a oggetti non conosciuti a tempo di compilazione si usa DII QueryInterface

22 Università La Sapienza Ingegneria del Software I 22 Dynamic Invocation Interface Codice interpretato per invocare operazioni su nuovi oggetti. Unica interfaccia per tutte le operazioni su tutte le istanze. Permette query asincrone.

23 Università La Sapienza Ingegneria del Software I 23 Struttura dell'ORB

24 Università La Sapienza Ingegneria del Software I 24 ORB interface Permette accesso ai servizi CORBA Accesso all'Interface Repository Costruzione di DII Operazioni su Object Reference Operazioni su politiche Costruzione di valuetype

25 Università La Sapienza Ingegneria del Software I 25 Esempi di servizi Naming service –Permette di mettere in relazione nomi e riferimenti ad oggetti –Metodi per binding e resolve Trading service –Permette di ritrovare oggetti con certe caratteristiche

26 Università La Sapienza Ingegneria del Software I 26 Comunicazione remota

27 Università La Sapienza Ingegneria del Software I 27 IIOP GIOP: astratto rispetto al livello di trasporto IIOP: mapping di GIOP su TCP/IP –Specifica informazioni di indirizzamento delloggetto

28 Università La Sapienza Ingegneria del Software I 28 IOR Object Reference remota IOR contiene indirizzo IP e numero di porta su cui è in ascolto il server Specifica IDL di uno IOR module IIOP { //PIDL struct Version { octet major; octet minor; }; struct ProfileBody_1_1 { Version iiop_version; string host; unsigned short port; sequence object_key; sequence components; };


Scaricare ppt "Università La Sapienza Ingegneria del Software I 1 Ingegneria del software I Seminario1:CORBA."

Presentazioni simili


Annunci Google