CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo -...

76
CORBA;2.ppt Object Management Group’s Object Management Group’s Object Management Object Management Architecture Architecture CORBA CORBA Fabiano Cattaneo - CEFRIEL Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270 FAX (02) 23954 Tel. (02) 23954 270 FAX (02) 23954 254 254 E-mail: [email protected] E-mail: [email protected]

Transcript of CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo -...

Page 1: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CORBA;2.ppt

Object Management Group’sObject Management Group’sObject Management ArchitectureObject Management Architecture

CORBACORBA

Object Management Group’sObject Management Group’sObject Management ArchitectureObject Management Architecture

CORBACORBA

Fabiano Cattaneo - CEFRIELFabiano Cattaneo - CEFRIEL

Via Fucini, 2 - 20133 MilanoVia Fucini, 2 - 20133 Milano

Tel. (02) 23954 270 FAX (02) 23954 254Tel. (02) 23954 270 FAX (02) 23954 254

E-mail: [email protected]: [email protected]

Page 2: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 2

Indice del corso e prerequisitiIndice del corso e prerequisitiIndice del corso e prerequisitiIndice del corso e prerequisiti

IndiceIndice Il contesto e le motivazioniIl contesto e le motivazioni L’architettura concettuale di riferimentoL’architettura concettuale di riferimento Il modello ad oggettiIl modello ad oggetti Common Object Request Broker ArchitectureCommon Object Request Broker Architecture Un esempioUn esempio

PrerequisitiPrerequisiti Concetti base dei sistemi object-orientedConcetti base dei sistemi object-oriented Linguaggio Java (per l’esempio)Linguaggio Java (per l’esempio)

Page 3: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 3

Il contestoIl contestoIl contestoIl contesto

La disponibilità di PC e reti locali ha causato un mutamento La disponibilità di PC e reti locali ha causato un mutamento rivoluzionarlo nelle architetture dei sistemi: da mainframe a rivoluzionarlo nelle architetture dei sistemi: da mainframe a client/server.client/server.

il client è in grado di effettuare elaborazioni locali (es. interfaccia il client è in grado di effettuare elaborazioni locali (es. interfaccia grafica)grafica)

il server mantiene funzioni centrali (es. DB)il server mantiene funzioni centrali (es. DB) la comunicazione tra client e server è resa possibile da LAN la comunicazione tra client e server è resa possibile da LAN

economiche ed efficientieconomiche ed efficienti

Così come il modello C/S ha rotto la monoliticità del Così come il modello C/S ha rotto la monoliticità del mainframe, così gli oggetti tendono a frammentare sia il mainframe, così gli oggetti tendono a frammentare sia il lato client che il lato server.lato client che il lato server.

i nuovi elementi del modello sono i “componenti”i nuovi elementi del modello sono i “componenti”

Page 4: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 4

Il contestoIl contestoIl contestoIl contesto

Nuovo hardware ha reso possibile la comunicazione a Nuovo hardware ha reso possibile la comunicazione a distanza (WAN) in modo efficiente e diffuso.distanza (WAN) in modo efficiente e diffuso.

alta velocitàalta velocità basso costobasso costo grande coperturagrande copertura

Le applicazioni stanno assumendo dimensioni planetarieLe applicazioni stanno assumendo dimensioni planetarie es. Internet e relative applicazionies. Internet e relative applicazioni

I moderni PC sono equipaggiati di hardware e software I moderni PC sono equipaggiati di hardware e software che li mettono in grado di funzionare sia come client che che li mettono in grado di funzionare sia come client che come server.come server.

Page 5: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 5

Lo scenarioLo scenarioLo scenarioLo scenario

Ci saranno milioni di potenziali clienti dei più disparati Ci saranno milioni di potenziali clienti dei più disparati servizi.servizi.

È chiaro che la massa di richieste generate da questi client È chiaro che la massa di richieste generate da questi client dovrà essere gestita non da un unico server, ma da una dovrà essere gestita non da un unico server, ma da una rete di server, che a loro volta dovranno essere in grado di rete di server, che a loro volta dovranno essere in grado di accedere a servizi offerti da altri server, ecc.accedere a servizi offerti da altri server, ecc.

Lo scenario futuro prevede una rete di componenti:Lo scenario futuro prevede una rete di componenti: oggetti autocontenuti, con uno stato e una “intelligenza” propria, in oggetti autocontenuti, con uno stato e una “intelligenza” propria, in

grado di interoperare con masse eterogenee di altri oggettigrado di interoperare con masse eterogenee di altri oggetti

Una volta tanto gli standard (OLE/COM, CORBA) sono Una volta tanto gli standard (OLE/COM, CORBA) sono presenti da subito.presenti da subito.

Page 6: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 6

Il problemaIl problemaIl problemaIl problema

Ci si trova a dover realizzare:Ci si trova a dover realizzare: sistemi distribuiti su vasta scalasistemi distribuiti su vasta scala sistemi eterogenei, costituiti da piattaforme hardware e software sistemi eterogenei, costituiti da piattaforme hardware e software

estremamente diverseestremamente diverse è necessario che i componenti del sistema distribuito possano è necessario che i componenti del sistema distribuito possano

interoperareinteroperare

L’approccio OMGL’approccio OMG Definire un’architettura di riferimento object oriented, basata sul Definire un’architettura di riferimento object oriented, basata sul

concetto di “interfaccia” di un componenteconcetto di “interfaccia” di un componente La conformità con l’architettura di riferimento dovrebbe garantire La conformità con l’architettura di riferimento dovrebbe garantire

l’interoperabilitàl’interoperabilità

Page 7: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 7

Perché object oriented?Perché object oriented?Perché object oriented?Perché object oriented?

Dal punto di vista dell’utenteDal punto di vista dell’utente Facilità d’uso delle interfacce utenti object-orientedFacilità d’uso delle interfacce utenti object-oriented Integrabilità di componenti sviluppati indipendentementeIntegrabilità di componenti sviluppati indipendentemente Condivisione di oggetti che svolgono funzioni comuniCondivisione di oggetti che svolgono funzioni comuni Wrapping di applicazioni legacy (anche non object oriented)Wrapping di applicazioni legacy (anche non object oriented)

Dal punto di vista dello sviluppatore:Dal punto di vista dello sviluppatore: Modularizzazione delle applicazioni, separazione delle interfacce, Modularizzazione delle applicazioni, separazione delle interfacce,

costruzione incrementalecostruzione incrementale RiusoRiuso

Page 8: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 8

Costruire applicazioni con i Costruire applicazioni con i componenticomponenti

Costruire applicazioni con i Costruire applicazioni con i componenticomponenti

L’oggetto o componente sarà l’unità di produzione, L’oggetto o componente sarà l’unità di produzione, distribuzione e manutenzione.distribuzione e manutenzione.

L’oggetto starà su un bus software (come CORBA o COM) L’oggetto starà su un bus software (come CORBA o COM) e attraverso questo bus riceverà richieste di servizio e e attraverso questo bus riceverà richieste di servizio e invierà le sue richieste e suoi risultati.invierà le sue richieste e suoi risultati.

Quindi il componente è anche l’unità di Quindi il componente è anche l’unità di deploymentdeployment.. Le architetture software cambieranno in accordo con Le architetture software cambieranno in accordo con

questo nuovo scenario ...questo nuovo scenario ... … … e così pure le modalità di e così pure le modalità di packagingpackaging, le licenze e , le licenze e

la manutenzionela manutenzione

Page 9: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 9

Costruire applicazioni con i Costruire applicazioni con i componenti: l’infrastrutturacomponenti: l’infrastrutturaCostruire applicazioni con i Costruire applicazioni con i componenti: l’infrastrutturacomponenti: l’infrastruttura

Già oggi i bus software offrono servizi che i componenti Già oggi i bus software offrono servizi che i componenti possono ereditare (addirittura a possono ereditare (addirittura a runrun-time) per ottenere alti -time) per ottenere alti livelli di cooperazione con gli altri componenti.livelli di cooperazione con gli altri componenti.

L’infrastruttura intelligente favorisce lo sviluppo dei L’infrastruttura intelligente favorisce lo sviluppo dei componenti:componenti:

aspetti come l’interoperabilità, la sicurezza, l’accesso concorrente, aspetti come l’interoperabilità, la sicurezza, l’accesso concorrente, ecc. sono gestiti direttamente dall’infrastrutturaecc. sono gestiti direttamente dall’infrastruttura

Costruire componenti diventa facile e alla portata di piccoli Costruire componenti diventa facile e alla portata di piccoli sviluppatori: non è infatti più necessario preoccuparsi sviluppatori: non è infatti più necessario preoccuparsi dell’intera infrastruttura dell’intera infrastruttura

Page 10: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 10

L’infrastrutturaL’infrastrutturaL’infrastrutturaL’infrastruttura

Fornisce un’architettura predefinita.Fornisce un’architettura predefinita. Abbasserà i costi di produzione.Abbasserà i costi di produzione. Abbasserà i costi per gli utenti finaliAbbasserà i costi per gli utenti finali

potranno decidere quali componenti servonopotranno decidere quali componenti servono potranno anche decidere quando fare gli potranno anche decidere quando fare gli upgradeupgrade

Scalabilità: è indifferente che un componente si trovi su un Scalabilità: è indifferente che un componente si trovi su un PC stand-alone o su una rete planetaria, dal suo punto di PC stand-alone o su una rete planetaria, dal suo punto di vista non cambia nulla, se ne occupa l’infrastrutturavista non cambia nulla, se ne occupa l’infrastruttura

Saranno possibili “applicazioni” una-tantum: l’applicazione Saranno possibili “applicazioni” una-tantum: l’applicazione sarà semplicemente l’insieme di componenti coinvolti in sarà semplicemente l’insieme di componenti coinvolti in una transazione, variabile di volta in voltauna transazione, variabile di volta in volta

Page 11: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 11

Primo: gli standardPrimo: gli standardPrimo: gli standardPrimo: gli standard

OMG (Object Management OMG (Object Management GroupGroup), attivo dal 1989 nella ), attivo dal 1989 nella definizione del bus softwaredefinizione del bus software

uno dei primi esempi di uno dei primi esempi di middlewaremiddleware ad oggetti ad oggetti ORB (Object ORB (Object RequestRequest BrokerBroker), permette di invocare metodi ), permette di invocare metodi

appartenenti ad oggetti remoti, in modo statico o dinamicoappartenenti ad oggetti remoti, in modo statico o dinamico CORBA 2.0 (1994), architettura inter-ORB basata su TCP/IP (e CORBA 2.0 (1994), architettura inter-ORB basata su TCP/IP (e

opzionalmente su DCE)opzionalmente su DCE) il bus è estensibile con servizi modulari (es. comunicazione ad il bus è estensibile con servizi modulari (es. comunicazione ad

eventi, transazioni, licenze, ecc.)eventi, transazioni, licenze, ecc.) contatti con altre organizzazioni di standardizzazione e produttori di contatti con altre organizzazioni di standardizzazione e produttori di

software assicurano un’ampia accettazione dello standardsoftware assicurano un’ampia accettazione dello standard

Page 12: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 12

Object Request Broker (ORB)

Object Services

Application Interfaces Domain Interfaces Common Facilities

L’architettura di riferimento (OMA)L’architettura di riferimento (OMA)L’architettura di riferimento (OMA)L’architettura di riferimento (OMA)

Page 13: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 13

Object Request BrokerObject Request Broker (ORB) (ORB): permette la comunicazione : permette la comunicazione in un ambiente distribuito (in un ambiente distribuito (software bussoftware bus))

Object ServicesObject Services (OS) (OS): servizi di applicabilità generale, : servizi di applicabilità generale, utilizzabili per la costruzione di sistemi distribuitiutilizzabili per la costruzione di sistemi distribuiti

Common FacilitiesCommon Facilities (CF) (CF): interfacce per funzionalità comuni : interfacce per funzionalità comuni a molti domini applicativi (mercati “orizzontali”: a molti domini applicativi (mercati “orizzontali”: compound compound document, user interface, system managementdocument, user interface, system management, ..., ...))

Domain InterfacesDomain Interfaces (DI) (DI): interfacce per funzionalità : interfacce per funzionalità specifiche di un dominio (mercati “verticali”: specifiche di un dominio (mercati “verticali”: business business objects, healthcare, telecommunication, financeobjects, healthcare, telecommunication, finance, ..., ...))

Application InterfacesApplication Interfaces (AI) (AI): interfacce non standardizzate, : interfacce non standardizzate, dipendenti dall’applicazione (specificate ed utilizzate da un dipendenti dall’applicazione (specificate ed utilizzate da un singolo produttore)singolo produttore)

L’architettura di riferimentoL’architettura di riferimento

ComponentiComponentiL’architettura di riferimentoL’architettura di riferimento

ComponentiComponenti

Page 14: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 14

CORBA è l’architettura di riferimento per la costruzione di CORBA è l’architettura di riferimento per la costruzione di ORB (ORB (software bussoftware bus))

Gli oggetti che si affacciano sul bus descrivono i servizi che Gli oggetti che si affacciano sul bus descrivono i servizi che mettono a disposizione definendone le interfacce mediante mettono a disposizione definendone le interfacce mediante un un Interface Definition LanguageInterface Definition Language (IDL) (IDL)

Le interfacce descritte con IDL costituiscono delle Le interfacce descritte con IDL costituiscono delle specifichespecifiche; le implementazioni possono essere realizzate ; le implementazioni possono essere realizzate con un linguaggio qualsiasi (per cui esista un con un linguaggio qualsiasi (per cui esista un mappingmapping IDL) IDL)

Oggetti con implementazioni scritte in linguaggi diversi Oggetti con implementazioni scritte in linguaggi diversi possono interoperare (richiamare reciprocamente i metodi)possono interoperare (richiamare reciprocamente i metodi)

Oggetti collegati ad ORB diversi (anche di venditori diversi) Oggetti collegati ad ORB diversi (anche di venditori diversi) possono interoperare (CORBA 2.0)possono interoperare (CORBA 2.0)

L’architettura di riferimentoL’architettura di riferimento

ORB e CORBAORB e CORBAL’architettura di riferimentoL’architettura di riferimento

ORB e CORBAORB e CORBA

Page 15: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 15

Sono i “blocchi base” che consentono di costruire Sono i “blocchi base” che consentono di costruire applicazioni distribuiteapplicazioni distribuite

La specifica di un La specifica di un Object ServiceObject Service è costituita da un insieme è costituita da un insieme di interfacce (IDL) e dalla descrizione della loro semantica di interfacce (IDL) e dalla descrizione della loro semantica (inglese)(inglese)

L’architettura di riferimentoL’architettura di riferimento

ORB e CORBAORB e CORBAL’architettura di riferimentoL’architettura di riferimento

ORB e CORBAORB e CORBA

Page 16: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 16

Il modello ad oggettiIl modello ad oggettiIl modello ad oggettiIl modello ad oggetti

OMA definisce un modello parziale della computazione che OMA definisce un modello parziale della computazione che include le caratteristiche principali della tecnologia ad include le caratteristiche principali della tecnologia ad oggettioggetti

Un sistema ad oggetti è visto come un insieme di oggetti in Un sistema ad oggetti è visto come un insieme di oggetti in cui i client possono richiedere un servizio agli oggetti server cui i client possono richiedere un servizio agli oggetti server senza sapere in che modo il server realizza il servizio (qual senza sapere in che modo il server realizza il servizio (qual è il codice da eseguire, qual è il formato dei dati)è il codice da eseguire, qual è il formato dei dati)

Un client è schermato da un’interfaccia rispetto al modo in Un client è schermato da un’interfaccia rispetto al modo in cui un server è realizzatocui un server è realizzato

Page 17: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 17

Un oggetto in OMA è una entità che:Un oggetto in OMA è una entità che: incapsula dati e operazioniincapsula dati e operazioni ha un’interfaccia ben definitaha un’interfaccia ben definita è univocamente identificabileè univocamente identificabile è in grado di eseguire i servizi richiesti da un clientè in grado di eseguire i servizi richiesti da un client può rappresentare un oggetto del mondo realepuò rappresentare un oggetto del mondo reale

NotaNota: nella visione OMA i client non devono : nella visione OMA i client non devono necessariamente essere oggetti, anche se nelle situazioni necessariamente essere oggetti, anche se nelle situazioni più comuni un’entità si può comportare sia da client che da più comuni un’entità si può comportare sia da client che da serverserver

Il modello ad oggettiIl modello ad oggetti

Concetti base: oggettiConcetti base: oggettiIl modello ad oggettiIl modello ad oggetti

Concetti base: oggettiConcetti base: oggetti

Page 18: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 18

Il modello ad oggettiIl modello ad oggetti

Scambio di messaggiScambio di messaggiIl modello ad oggettiIl modello ad oggetti

Scambio di messaggiScambio di messaggi

AttenzioneAttenzione: questo è un concetto generale, non di OMA: questo è un concetto generale, non di OMA La comunicazione fra oggetti in un sistema ad oggetti La comunicazione fra oggetti in un sistema ad oggetti

avviene (logicamente) mediante scambio di messaggiavviene (logicamente) mediante scambio di messaggi L’oggetto client invia un messaggio all’oggetto serverL’oggetto client invia un messaggio all’oggetto server Il Il messaggiomessaggio identifica, oltre al destinatario (server), anche identifica, oltre al destinatario (server), anche

l’l’operazioneoperazione (servizio) che viene richiesta e porta con sé i (servizio) che viene richiesta e porta con sé i parametriparametri necessari al server per svolgerla necessari al server per svolgerla

L’oggetto server che riceve il messaggio sceglie di eseguire L’oggetto server che riceve il messaggio sceglie di eseguire un particolare un particolare metodometodo (cioè codice) in base all’operazione (cioè codice) in base all’operazione richiestarichiesta

Page 19: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 19

Nella terminologia OMA, una Nella terminologia OMA, una richiestarichiesta ( (requestrequest) viene ) viene inviata da un client ad un oggetto per richiedere un servizioinviata da un client ad un oggetto per richiedere un servizio

Una richiesta è costituita dal nome di una Una richiesta è costituita dal nome di una operazioneoperazione, , dall’identificazione dell’dall’identificazione dell’oggettooggetto server, dai server, dai parametriparametri dell’operazione, se necessari, e dal dell’operazione, se necessari, e dal contestocontesto in cui svolgere in cui svolgere l’operazione, se necessariol’operazione, se necessario

Ricevuta una richiesta, un oggetto esegue il servizio Ricevuta una richiesta, un oggetto esegue il servizio relativo nel contesto specificato ed eventualmente relativo nel contesto specificato ed eventualmente restituisce i risultati prodotti o segnala che si è verificata restituisce i risultati prodotti o segnala che si è verificata una condizione anomalauna condizione anomala

Il modello ad oggettiIl modello ad oggetti

RichiesteRichiesteIl modello ad oggettiIl modello ad oggetti

RichiesteRichieste

Page 20: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 20

I parametri di una richiesta possono essere trasmessi dal I parametri di una richiesta possono essere trasmessi dal client all’oggetto (ingresso), dall’oggetto al client (uscita) o client all’oggetto (ingresso), dall’oggetto al client (uscita) o in entrambi i sensi (ingresso-uscita)in entrambi i sensi (ingresso-uscita)

Una richiesta può anche specificare un unico valore Una richiesta può anche specificare un unico valore restituito come risultato della stessa (in stile funzionale)restituito come risultato della stessa (in stile funzionale)

Il modello ad oggettiIl modello ad oggetti

Parametri delle richiesteParametri delle richiesteIl modello ad oggettiIl modello ad oggetti

Parametri delle richiesteParametri delle richieste

Page 21: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 21

Un modulo di richiesta (Un modulo di richiesta (request formrequest form) è uno “schema” che ) è uno “schema” che può essere utilizzato più volte per inviare una richiestapuò essere utilizzato più volte per inviare una richiesta

Un modulo di richiesta può essere definito mediante Un modulo di richiesta può essere definito mediante costrutti linguistici di uno pseudo-linguaggio di costrutti linguistici di uno pseudo-linguaggio di programmazione (IDL) o costruito programmaticamente programmazione (IDL) o costruito programmaticamente (invocando le opportune funzioni)(invocando le opportune funzioni)

Il modello ad oggettiIl modello ad oggetti

Moduli di richiestaModuli di richiestaIl modello ad oggettiIl modello ad oggetti

Moduli di richiestaModuli di richiesta

Page 22: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 22

I parametri di una richiesta sono costituiti dai I parametri di una richiesta sono costituiti dai valorivalori appartenenti ai appartenenti ai tipitipi definiti dal linguaggio IDL definiti dal linguaggio IDL

Un particolare valore può identificare un oggetto, ed in Un particolare valore può identificare un oggetto, ed in questo caso costituisce il questo caso costituisce il nome dell’oggettonome dell’oggetto ( (object nameobject name))

Se il nome di un oggetto identifica affidabilmente, ogni volta Se il nome di un oggetto identifica affidabilmente, ogni volta che viene utilizzato, un unico oggetto, viene anche detto che viene utilizzato, un unico oggetto, viene anche detto riferimentoriferimento dell’oggettodell’oggetto ( (object referenceobject reference))

Il modello ad oggettiIl modello ad oggetti

Valori e oggettiValori e oggettiIl modello ad oggettiIl modello ad oggetti

Valori e oggettiValori e oggetti

Page 23: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 23

Gli oggetti possono essere creati e distrutti, ma ciò non Gli oggetti possono essere creati e distrutti, ma ciò non risulta direttamente visibile ai clientrisulta direttamente visibile ai client

I client non hanno a disposizione meccanismi per richiedere I client non hanno a disposizione meccanismi per richiedere la creazione o la distruzione di oggettila creazione o la distruzione di oggetti

Nuovi oggetti possono essere creati come effetto Nuovi oggetti possono essere creati come effetto dell’emissione di richieste e si manifestano ai client nella dell’emissione di richieste e si manifestano ai client nella forma di riferimenti trasmessi come parametri in uscita o forma di riferimenti trasmessi come parametri in uscita o risultati della richiestarisultati della richiesta

Il modello ad oggettiIl modello ad oggetti

Creazione e distruzioneCreazione e distruzioneIl modello ad oggettiIl modello ad oggetti

Creazione e distruzioneCreazione e distruzione

Page 24: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 24

Un tipo è un’entità identificabile mediante un nomeUn tipo è un’entità identificabile mediante un nome Ogni tipo ha associato un Ogni tipo ha associato un predicatopredicato che permette di che permette di

stabilire se un valore appartiene o no al tipostabilire se un valore appartiene o no al tipo I tipi vengono utilizzati per restringere l’insieme di valori I tipi vengono utilizzati per restringere l’insieme di valori

utilizzabili come parametri o risultato delle richiesteutilizzabili come parametri o risultato delle richieste Se tutti i valori che soddisfano il predicato di un tipo sono Se tutti i valori che soddisfano il predicato di un tipo sono

oggetti, allora quel tipo viene chiamato oggetti, allora quel tipo viene chiamato object tipeobject tipe OMA definisce un insieme di tipi base (numeri interi e in OMA definisce un insieme di tipi base (numeri interi e in

virgola mobile, caratteri, virgola mobile, caratteri, booleanboolean, …) ed un insieme di , …) ed un insieme di costruttori di tipo (record, sequenze, costruttori di tipo (record, sequenze, arrayarray, …), …)

Il modello ad oggettiIl modello ad oggetti

TipiTipiIl modello ad oggettiIl modello ad oggetti

TipiTipi

Page 25: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 25

Un’interfaccia è un’insieme di operazioni che un client può Un’interfaccia è un’insieme di operazioni che un client può richiedere ad un oggettorichiedere ad un oggetto

Un oggetto Un oggetto soddisfasoddisfa un’interfaccia se è in grado di eseguire un’interfaccia se è in grado di eseguire tutte le operazioni appartenenti all’interfacciatutte le operazioni appartenenti all’interfaccia

Un oggetto può soddisfare più di una interfacciaUn oggetto può soddisfare più di una interfaccia Un’interfaccia può specificare anche degli Un’interfaccia può specificare anche degli attributiattributi che che

corrispondono ad un’operazione di lettura e ad una di corrispondono ad un’operazione di lettura e ad una di scrittura (se l’attributo non è scrittura (se l’attributo non è read-onlyread-only))

Le interfacce sono descritte utilizzando il linguaggio IDLLe interfacce sono descritte utilizzando il linguaggio IDL

Il modello ad oggettiIl modello ad oggetti

InterfacceInterfacceIl modello ad oggettiIl modello ad oggetti

InterfacceInterfacce

Page 26: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 26

Un’operazione è una entità con un nome che identifica un Un’operazione è una entità con un nome che identifica un particolare servizio che un client può richiedere ad un particolare servizio che un client può richiedere ad un oggettooggetto

Il nome dell’operazione è chiamato Il nome dell’operazione è chiamato operation identifieroperation identifier Un’operazione è caratterizzata dalla propria Un’operazione è caratterizzata dalla propria signaturesignature::

l’elenco dei (tipi dei) parametri dell’operazionel’elenco dei (tipi dei) parametri dell’operazione il (tipo del) risultatoil (tipo del) risultato le eccezioni che l’operazione può sollevarele eccezioni che l’operazione può sollevare il contesto in cui può essere eseguitail contesto in cui può essere eseguita la semantica dell’esecuzionela semantica dell’esecuzione

Il modello ad oggettiIl modello ad oggetti

OperazioniOperazioniIl modello ad oggettiIl modello ad oggetti

OperazioniOperazioni

Page 27: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 27

Un’operazione può avere una semantica di esecuzione di Un’operazione può avere una semantica di esecuzione di tipo:tipo:

at-most-onceat-most-once: se viene restituito un risultato, l’operazione richiesta : se viene restituito un risultato, l’operazione richiesta è stata eseguita esattamente una sola volta; se viene restituita è stata eseguita esattamente una sola volta; se viene restituita un’eccezione, l’operazione non è stata eseguita o è stata eseguita un’eccezione, l’operazione non è stata eseguita o è stata eseguita al più una voltaal più una volta

best-effort (one-waybest-effort (one-way)): può essere caratteristica solo di operazioni : può essere caratteristica solo di operazioni che non restituiscono risultato; il client invia la richiesta e poi che non restituiscono risultato; il client invia la richiesta e poi prosegue, senza poter verificare se l’operazione è stata o meno prosegue, senza poter verificare se l’operazione è stata o meno completata con successocompletata con successo

Il modello ad oggettiIl modello ad oggetti

Semantica delle operazioniSemantica delle operazioniIl modello ad oggettiIl modello ad oggetti

Semantica delle operazioniSemantica delle operazioni

Page 28: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 28

Un oggetto server deve poter eseguire le attività Un oggetto server deve poter eseguire le attività corrispondenti alle richieste che riceve dai clientcorrispondenti alle richieste che riceve dai client

È l’implementazione di un oggetto (È l’implementazione di un oggetto (object implementationobject implementation) ) che esegue tali attivitàche esegue tali attività

Durante l’esecuzione delle operazioni l’implementazione di Durante l’esecuzione delle operazioni l’implementazione di un oggetto può eseguire delle computazioni, può modificare un oggetto può eseguire delle computazioni, può modificare il proprio stato interno e può inviare richieste ad altri oggettiil proprio stato interno e può inviare richieste ad altri oggetti

Il modello ad oggettiIl modello ad oggetti

Oggetti serverOggetti serverIl modello ad oggettiIl modello ad oggetti

Oggetti serverOggetti server

Page 29: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 29

Il servizio richiesto ad un oggetto viene svolto mediante Il servizio richiesto ad un oggetto viene svolto mediante l’esecuzione di codice (l’esecuzione di codice (metodometodo) da parte ) da parte dell’implementazione dell’oggettodell’implementazione dell’oggetto

L’L’attivazione di un metodoattivazione di un metodo è una particolare esecuzione di è una particolare esecuzione di un metodoun metodo

Se l’oggetto (lo stato dell’oggetto) non è disponibile per una Se l’oggetto (lo stato dell’oggetto) non è disponibile per una data attivazione di metodo, è innanzi tutto necessario data attivazione di metodo, è innanzi tutto necessario ripristinare questo stato (ripristinare questo stato (attivazione dell’oggettoattivazione dell’oggetto))

Il processo inverso si chiama Il processo inverso si chiama disattivazionedisattivazione

Il modello ad oggettiIl modello ad oggetti

Esecuzione dei serviziEsecuzione dei serviziIl modello ad oggettiIl modello ad oggetti

Esecuzione dei serviziEsecuzione dei servizi

Page 30: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 30

Un Un object implementationobject implementation è ciò che consente di definire: è ciò che consente di definire: lo stato di un oggettolo stato di un oggetto i metodi di un oggettoi metodi di un oggetto le modalità con cui si seleziona un metodo in base al nome di le modalità con cui si seleziona un metodo in base al nome di

un’operazioneun’operazione come si rende disponibile lo stato di un oggetto ai metodi che come si rende disponibile lo stato di un oggetto ai metodi che

vengono eseguitivengono eseguiti cosa accade dopo la creazione di un oggetto (quali metodi vengono cosa accade dopo la creazione di un oggetto (quali metodi vengono

resi disponibili?)resi disponibili?)

Il modello ad oggettiIl modello ad oggetti

CostruzioneCostruzioneIl modello ad oggettiIl modello ad oggetti

CostruzioneCostruzione

Page 31: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 31

Object Request Broker (ORB)

Object Services

Application Interfaces Domain Interfaces Common Facilities

L’architettura di riferimento (OMA)L’architettura di riferimento (OMA)L’architettura di riferimento (OMA)L’architettura di riferimento (OMA)

Page 32: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 32

CORBACORBACORBACORBA

Common Object Request Broker ArchitectureCommon Object Request Broker Architecture (CORBA): (CORBA): definisce l’interfaccia programmatica dell’ORBdefinisce l’interfaccia programmatica dell’ORB

Interface Definition LanguageInterface Definition Language (IDL): è il linguaggio con cui (IDL): è il linguaggio con cui si descrivono le interfacce degli oggetti che si affacciano sul si descrivono le interfacce degli oggetti che si affacciano sul busbus

L’interfaccia IDL nasconde ai client le modalità (linguaggio) L’interfaccia IDL nasconde ai client le modalità (linguaggio) con cui sono realizzati i server: separa l’interfaccia con cui sono realizzati i server: separa l’interfaccia dall’implementazionedall’implementazione

L’ORB rende trasparente ai client le modalità con cui L’ORB rende trasparente ai client le modalità con cui localizzare, attivare e comunicare con i serverlocalizzare, attivare e comunicare con i server

Page 33: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 33

L’IDLL’IDLL’IDLL’IDL

Consente di separare le interfacce dalle implementazioni Consente di separare le interfacce dalle implementazioni degli oggetti:degli oggetti:

supporta l’ereditarietà multipla ed il controllo statico dei tipisupporta l’ereditarietà multipla ed il controllo statico dei tipi è indipendente dal linguaggio di programmazione utilizzato per è indipendente dal linguaggio di programmazione utilizzato per

implementare gli oggetti (implementare gli oggetti (mappingmapping per linguaggi diversi: C, C++, per linguaggi diversi: C, C++, SmallTalk, Java, ...)SmallTalk, Java, ...)

non è un linguaggio di programmazione, ma un linguaggio per la non è un linguaggio di programmazione, ma un linguaggio per la specifica di interfaccespecifica di interfacce

È definito in modo da consentire un utilizzo sia statico che È definito in modo da consentire un utilizzo sia statico che dinamicodinamico

È uno dei fattori che consentono l’interoperabilitàÈ uno dei fattori che consentono l’interoperabilità

Page 34: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 34

L’IDL ha una sintassi simile a quella del C++L’IDL ha una sintassi simile a quella del C++ Il compilatore IDL supporta il Il compilatore IDL supporta il pre-processingpre-processing in stile C++ in stile C++

(#include)(#include) Una specifica scritta in IDL consiste in un insieme di:Una specifica scritta in IDL consiste in un insieme di:

dichiarazioni di tipidichiarazioni di tipi dichiarazioni di costantidichiarazioni di costanti dichiarazioni di eccezionidichiarazioni di eccezioni dichiarazioni di interfaccedichiarazioni di interfacce dichiarazioni di modulidichiarazioni di moduli

L’IDLL’IDLL’IDLL’IDL

Page 35: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 35

Il “modulo” IDL coincide con il costrutto di modularizzazione Il “modulo” IDL coincide con il costrutto di modularizzazione tipico dei linguaggi di programmazione (tipico dei linguaggi di programmazione (scopescope di nomi) di nomi)

module Global {module Global {

typedef ...typedef ...

interface B ...interface B ...

}}

L’IDL: moduliL’IDL: moduliL’IDL: moduliL’IDL: moduli

Page 36: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 36

Un’interfaccia IDL definisce l’insieme di tipi, costanti, Un’interfaccia IDL definisce l’insieme di tipi, costanti, eccezioni, attributi ed operazioni messi a disposizione da eccezioni, attributi ed operazioni messi a disposizione da un oggetto serverun oggetto server

Ogni interfaccia ha un nome e può essere definita a partire Ogni interfaccia ha un nome e può essere definita a partire da una o più interfacce esistenti (ereditarietà multipla)da una o più interfacce esistenti (ereditarietà multipla)

l’interfaccia derivata può aggiungere nuovi elementi o ridefinire l’interfaccia derivata può aggiungere nuovi elementi o ridefinire elementi esistentielementi esistenti

non è possibile ereditare da interfacce che definiscono lo stesso non è possibile ereditare da interfacce che definiscono lo stesso attributo o la stessa operazioneattributo o la stessa operazione

le ambiguità si risolvono qualificando l’elemento con il nome le ambiguità si risolvono qualificando l’elemento con il nome dell’interfaccia (::)dell’interfaccia (::)

L’IDL: interfacceL’IDL: interfacceL’IDL: interfacceL’IDL: interfacce

Page 37: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 37

interface Base {interface Base {

const int N …const int N …

}}

interface Derived: Base {interface Derived: Base {

const int N …const int N …

typedef …typedef …

}}

L’IDL: interfacceL’IDL: interfacceL’IDL: interfacceL’IDL: interfacce

Page 38: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 38

All’interno di un interfaccia o modulo è possibile dichiarare All’interno di un interfaccia o modulo è possibile dichiarare entità con valori costanti (espressioni costanti)entità con valori costanti (espressioni costanti)

const int MAX = MIN + LENconst int MAX = MIN + LEN

È possibile associare un nome alla definizione di un nuovo È possibile associare un nome alla definizione di un nuovo tipo (typedef)tipo (typedef)

Sono previsti i tipi base ed i costruttori di tipo di derivazione Sono previsti i tipi base ed i costruttori di tipo di derivazione C/C++ (escluse le classi), più qualche estensione (any, C/C++ (escluse le classi), più qualche estensione (any, union discriminate, sequence, string)union discriminate, sequence, string)

typedef sequence< sequence<long> > DblSeqtypedef sequence< sequence<long> > DblSeq

typedef string <100> MyStringtypedef string <100> MyString

L’IDL: costanti e tipiL’IDL: costanti e tipiL’IDL: costanti e tipiL’IDL: costanti e tipi

Page 39: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 39

Le eccezioni possono essere dichiarate come struttureLe eccezioni possono essere dichiarate come strutture

exception NotFound {string <N> what}exception NotFound {string <N> what} Possono essere sollevate da operazioni chiamate e gestite Possono essere sollevate da operazioni chiamate e gestite

dal chiamante. CORBA definisce un insieme di eccezioni dal chiamante. CORBA definisce un insieme di eccezioni standardstandard

Le operazioni vengono dichiarate in un formato simile alle Le operazioni vengono dichiarate in un formato simile alle funzioni C, specificando in più la semantica di invocazione, funzioni C, specificando in più la semantica di invocazione, l’elenco delle eccezioni che possono sollevare ed il l’elenco delle eccezioni che possono sollevare ed il contesto che richiedonocontesto che richiedono

void search(in Code what, out Item el)void search(in Code what, out Item el)raises (NotFound)raises (NotFound)

L’IDL: eccezioni ed operazioniL’IDL: eccezioni ed operazioniL’IDL: eccezioni ed operazioniL’IDL: eccezioni ed operazioni

Page 40: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 40

All’interno di una interfaccia è possibile dichiarare attributi, All’interno di una interfaccia è possibile dichiarare attributi, che corrispondono logicamente ad una coppia di operazioni che corrispondono logicamente ad una coppia di operazioni (una per modificare ed una per leggerne il valore)(una per modificare ed una per leggerne il valore)

attribute float radius;attribute float radius;

readonly attribute position_t position;readonly attribute position_t position;

L’IDL: attributiL’IDL: attributiL’IDL: attributiL’IDL: attributi

Page 41: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 41

Object Request Broker (ORB)

COBOL JavaC C++ Smalltalk Ada

IDL IDL IDL IDL IDL IDL

IDL e interoperabilitàIDL e interoperabilitàIDL e interoperabilitàIDL e interoperabilità

Attualmente esistono correlazioni (Attualmente esistono correlazioni (bindingbinding) fra IDL e: C, C+) fra IDL e: C, C++, Ada, Smalltalk, Java (COBOL, ObjectiveC)+, Ada, Smalltalk, Java (COBOL, ObjectiveC)

È possibile specificare in IDL:È possibile specificare in IDL: attributi e metodi di un oggettoattributi e metodi di un oggetto gerarchie di ereditarietàgerarchie di ereditarietà eccezioni che un metodo può sollevareeccezioni che un metodo può sollevare

Page 42: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 42

Il ruolo dell’ORBIl ruolo dell’ORBIl ruolo dell’ORBIl ruolo dell’ORB

Costituisce un punto di contatto locale e ben identificabile Costituisce un punto di contatto locale e ben identificabile attraverso cui i client possono invocare metodi dei serverattraverso cui i client possono invocare metodi dei server

Smista le richieste fra oggetti distribuitiSmista le richieste fra oggetti distribuiti ““Comprende” l’IDL e mantiene un Comprende” l’IDL e mantiene un repositoryrepository contenente le contenente le

interfacce e le implementazioni registrate nel sistemainterfacce e le implementazioni registrate nel sistema Mantiene le informazioni di cui sopra all’interno di un Mantiene le informazioni di cui sopra all’interno di un

sistema distribuitosistema distribuito Consente di costruire una “rete di ORB”Consente di costruire una “rete di ORB”

Page 43: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 43

Object Request Broker Core

ClientIDL stubClient

IDL stub

Client

DynamicInvocation

ClientIDL stub

ORBInterface

StaticSkeleton

ImplementationRepository

InterfaceRepository

Object implementation

Identica per tutti gli ORB

DynamicInvocation

Dipende dall’interface del server

ObjectAdapter

Molteplici Object Adapter

Struttura di un ORBStruttura di un ORBStruttura di un ORBStruttura di un ORB

Page 44: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 44

Il Il clientclient è un’applicazione scritta in un linguaggio per cui sia è un’applicazione scritta in un linguaggio per cui sia stato definito un stato definito un bindingbinding con IDL (o che consenta di con IDL (o che consenta di richiamare procedure scritte in quel linguaggio)richiamare procedure scritte in quel linguaggio)

Non deve necessariamente essere un’applicazione object-Non deve necessariamente essere un’applicazione object-oriented (es. Visual Basic, 4GL)oriented (es. Visual Basic, 4GL)

ClientClient ed ed object implementationobject implementation possono essere localizzati possono essere localizzati ovunque (il ovunque (il clientclient non deve essere a conoscenza della non deve essere a conoscenza della localizzazione dell’localizzazione dell’object implementationobject implementation))

Un oggetto può operare contemporaneamente da Un oggetto può operare contemporaneamente da clientclient e e da da serverserver

Un Un clientclient può invocare un metodo di un oggetto remoto di può invocare un metodo di un oggetto remoto di cui abbia un cui abbia un object referenceobject reference e di cui conosca l’interfaccia e di cui conosca l’interfaccia

Struttura di un ORBStruttura di un ORB

ClientClientStruttura di un ORBStruttura di un ORB

ClientClient

Page 45: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 45

Un Un object referenceobject reference consente di identificare in modo consente di identificare in modo univoco un oggetto all’interno di un sistema costruito su di univoco un oggetto all’interno di un sistema costruito su di un ORBun ORB

CORBA non specifica in che modo debba essere CORBA non specifica in che modo debba essere realizzato, ma definisce il formato di un realizzato, ma definisce il formato di un Interoperable Interoperable Object ReferenceObject Reference (IOR) (IOR)

Il Il bindingbinding fra IDL ed un particolare linguaggio di fra IDL ed un particolare linguaggio di programmazione definisce in modo univoco come mappare programmazione definisce in modo univoco come mappare un un object referenceobject reference in un concetto del particolare linguaggio in un concetto del particolare linguaggio (puntatori in C/C++, riferimenti ad oggetti in SmallTalk, …)(puntatori in C/C++, riferimenti ad oggetti in SmallTalk, …)

Struttura di un ORBStruttura di un ORB

Object referenceObject referenceStruttura di un ORBStruttura di un ORB

Object referenceObject reference

Page 46: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 46

Struttura di un ORBStruttura di un ORB

Client IDL stubClient IDL stubStruttura di un ORBStruttura di un ORB

Client IDL stubClient IDL stub

Ogni Ogni stubstub corrisponde ad un’operazione del server che il corrisponde ad un’operazione del server che il client può invocare usando i meccanismi tipici del client può invocare usando i meccanismi tipici del linguaggio di programmazione (chiamata di linguaggio di programmazione (chiamata di subroutinesubroutine))

Lo stub Lo stub vieneviene costruito automaticamente a partire dall’IDL costruito automaticamente a partire dall’IDL dell’interfaccia (IDL compiler) nel linguaggio presceltodell’interfaccia (IDL compiler) nel linguaggio prescelto

Dal punto di vista del client, lo Dal punto di vista del client, lo stubstub è una chiamata di è una chiamata di procedura localeprocedura locale

All’interno dello All’interno dello stubstub, vengono codificati (, vengono codificati (marshaling)marshaling) i i parametri da inviare al server, vengono decodificati i parametri da inviare al server, vengono decodificati i risultati ricevuti e vengono ri-sollevate le eccezioni sollevate risultati ricevuti e vengono ri-sollevate le eccezioni sollevate dal serverdal server

Page 47: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 47

Struttura di un ORBStruttura di un ORB

Dynamic invocationDynamic invocationStruttura di un ORBStruttura di un ORB

Dynamic invocationDynamic invocation

Mediante una Mediante una Dynamic Invocation InterfaceDynamic Invocation Interface, in alternativa , in alternativa all’utilizzo di uno all’utilizzo di uno stubstub precompilato, il client può: precompilato, il client può:

venire a conoscenza durante l’esecuzione dell’interfaccia di un venire a conoscenza durante l’esecuzione dell’interfaccia di un oggettooggetto

costruire ed inviare dinamicamente una richiesta per richiedere lo costruire ed inviare dinamicamente una richiesta per richiedere lo svolgimento di un’operazione qualsiasisvolgimento di un’operazione qualsiasi

Dal lato server (Dal lato server (Dynamic Skeleton InterfaceDynamic Skeleton Interface)) Permette ad un server di ricevere richieste senza aver dovuto Permette ad un server di ricevere richieste senza aver dovuto

compilare in precedenza l’interfaccia IDLcompilare in precedenza l’interfaccia IDL

Un server non può distinguere se una richiesta è stata Un server non può distinguere se una richiesta è stata inviata da uno inviata da uno stubstub o mediante DII ed un client non può o mediante DII ed un client non può distinguere se un server risponde mediante uno distinguere se un server risponde mediante uno skeletonskeleton o o DSIDSI

Page 48: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 48

Struttura di un ORBStruttura di un ORB

Interface repositoryInterface repositoryStruttura di un ORBStruttura di un ORB

Interface repositoryInterface repository

Contiene la descrizione delle interfacce definite nel sistemaContiene la descrizione delle interfacce definite nel sistema Può essere interrogato (da un oggetto, durante Può essere interrogato (da un oggetto, durante

l’esecuzione) per ottenere informazioni sulle interfacce, sui l’esecuzione) per ottenere informazioni sulle interfacce, sui metodi che le compongono, sui parametrimetodi che le compongono, sui parametri

Le informazioni ottenute possono essere utilizzate per Le informazioni ottenute possono essere utilizzate per costruire dinamicamente le richieste (DII)costruire dinamicamente le richieste (DII)

Gli oggetti presenti nel sistema possono anche aggiungere Gli oggetti presenti nel sistema possono anche aggiungere e modificare le informazioni memorizzate nel e modificare le informazioni memorizzate nel repositoryrepository

Il Il repositoryrepository consente al sistema di “auto-descriversi” consente al sistema di “auto-descriversi” I servizi offerti dall’I servizi offerti dall’interface repositoryinterface repository sono descritti sono descritti

mediante interfacce specificate in IDLmediante interfacce specificate in IDL

Page 49: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 49

Invocazione statica o dinamica?Invocazione statica o dinamica?Invocazione statica o dinamica?Invocazione statica o dinamica?

Gli Gli stubstub statici: statici: possono essere utilizzati solo se si conoscono a priori i metodi che possono essere utilizzati solo se si conoscono a priori i metodi che

si vogliono invocare (si vogliono invocare (compile timecompile time)) il loro utilizzo è praticamente trasparente al programmatoreil loro utilizzo è praticamente trasparente al programmatore consente controlli statici di correttezzaconsente controlli statici di correttezza è efficienteè efficiente

L’invocazione dinamica:L’invocazione dinamica: non richiede di conoscere i metodi (interfacce) prima non richiede di conoscere i metodi (interfacce) prima

dell’esecuzionedell’esecuzione consente di scrivere codice genericoconsente di scrivere codice generico

Page 50: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 50

Struttura di un ORBStruttura di un ORB

ORB InterfaceORB InterfaceStruttura di un ORBStruttura di un ORB

ORB InterfaceORB Interface

Consiste in un insieme di API di servizi offerti dall’ORB, utili Consiste in un insieme di API di servizi offerti dall’ORB, utili sia per il client che per il serversia per il client che per il server

Fra le API offerte vi sono quelle che operano direttamente Fra le API offerte vi sono quelle che operano direttamente su su object referenceobject reference

get_interfaceget_interface per ottenere una descrizione dell’interfaccia per ottenere una descrizione dell’interfaccia dell’oggetto corrispondentedell’oggetto corrispondente

get_implementationget_implementation per ottenere una descrizione dell’ per ottenere una descrizione dell’object object implementationimplementation corrispondente corrispondente

is_nilis_nil per verificare se l’ per verificare se l’object referenceobject reference identifica effettivamente un identifica effettivamente un oggettooggetto

Page 51: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 51

Struttura di un ORBStruttura di un ORB

Object implementationObject implementationStruttura di un ORBStruttura di un ORB

Object implementationObject implementation

È l’insieme di codice e dati che costituiscono È l’insieme di codice e dati che costituiscono l’implementazione degli oggetti server e che ne definiscono l’implementazione degli oggetti server e che ne definiscono stato e comportamentostato e comportamento

Può essere realizzato in modi diversi (vedi i diversi tipi di Può essere realizzato in modi diversi (vedi i diversi tipi di Basic Object Adapter)Basic Object Adapter)

Page 52: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 52

Struttura di un ORBStruttura di un ORB

Static Implementation SkeletonStatic Implementation SkeletonStruttura di un ORBStruttura di un ORB

Static Implementation SkeletonStatic Implementation Skeleton

È uno dei meccanismi con cui un oggetto server riceve le È uno dei meccanismi con cui un oggetto server riceve le richieste dei client (l’altro è il DSI)richieste dei client (l’altro è il DSI)

Costituiscono un meccanismo analogo a quello degli Costituiscono un meccanismo analogo a quello degli stub:stub: decodificano i parametri e li forniscono al metodo invocatodecodificano i parametri e li forniscono al metodo invocato ricevono il risultato o le eccezioni e li codificano per rispedirli al ricevono il risultato o le eccezioni e li codificano per rispedirli al

clientclient

Come gli Come gli stubstub si ottengono come prodotto della si ottengono come prodotto della compilazione di interfacce descritte in IDLcompilazione di interfacce descritte in IDL

Page 53: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 53

Struttura di un ORBStruttura di un ORB

Implementation repositoryImplementation repositoryStruttura di un ORBStruttura di un ORB

Implementation repositoryImplementation repository

Contiene informazioni sulle Contiene informazioni sulle object implementationobject implementation del del sistema, gli oggetti istanziati, i loro identificatori, sistema, gli oggetti istanziati, i loro identificatori, informazioni per la loro gestioneinformazioni per la loro gestione

Page 54: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 54

Struttura di un ORBStruttura di un ORB

Object AdapterObject AdapterStruttura di un ORBStruttura di un ORB

Object AdapterObject Adapter

È il tramite fra il “mezzo trasmissivo” (ORB) ed È il tramite fra il “mezzo trasmissivo” (ORB) ed object object implementationimplementation

Supporta le operazioni più comunemente utilizzate da Supporta le operazioni più comunemente utilizzate da object implementationobject implementation::

istanziazione di nuovi oggettiistanziazione di nuovi oggetti attribuzione e gestione di attribuzione e gestione di object referenceobject reference ricezione delle richieste ed instradamentoricezione delle richieste ed instradamento registrazione nell’registrazione nell’implementation repositoryimplementation repository

CORBA definisce un CORBA definisce un object adapterobject adapter standard ( standard (Basic Object Basic Object Adapter, BOAAdapter, BOA))

Page 55: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 55

Struttura di un ORBStruttura di un ORB

Esempi di adapterEsempi di adapterStruttura di un ORBStruttura di un ORB

Esempi di adapterEsempi di adapter

Basic Object Adapter (BOA)Basic Object Adapter (BOA): offre i servizi di base come : offre i servizi di base come generazione e gestione di generazione e gestione di object referenceobject reference, invocazione di , invocazione di metodi, consegna delle richieste, registrazione, attivazione metodi, consegna delle richieste, registrazione, attivazione e disattivazionee disattivazione

Library Object Adapter (LOA)Library Object Adapter (LOA): può sostituire il BOA se : può sostituire il BOA se client e server fanno parte dello stesso processo (ORB = client e server fanno parte dello stesso processo (ORB = libreria), fornisce pochi servizi ma ottimizzati per il libreria), fornisce pochi servizi ma ottimizzati per il particolare utilizzo (particolare utilizzo (in-processin-process))

Object-Oriented Database Adapter (OODA)Object-Oriented Database Adapter (OODA): realizza una : realizza una connessione con un database object-oriented e consente di connessione con un database object-oriented e consente di accedere gli oggetti in esso memorizzatiaccedere gli oggetti in esso memorizzati

Tutti gli adapter sono definiti specificandone le interfacce in Tutti gli adapter sono definiti specificandone le interfacce in IDLIDL

Page 56: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 56

Struttura di un ORBStruttura di un ORB

Diversi tipi di BOADiversi tipi di BOAStruttura di un ORBStruttura di un ORB

Diversi tipi di BOADiversi tipi di BOA

Shared serverShared server il BOA attiva un server non appena riceve una richiesta per un il BOA attiva un server non appena riceve una richiesta per un

oggetto gestito da quel serveroggetto gestito da quel server un unico server può gestire più oggettiun unico server può gestire più oggetti

Unshared serverUnshared server ogni oggetto viene gestito da un server diverso, attivato dal BOA ogni oggetto viene gestito da un server diverso, attivato dal BOA

quando riceve una richiesta per quell’oggettoquando riceve una richiesta per quell’oggetto

Server-per-methodServer-per-method viene creato un server per ogni richiesta ricevutaviene creato un server per ogni richiesta ricevuta

Persistente serverPersistente server il server non viene attivato dal BOA, ma con altri mezziil server non viene attivato dal BOA, ma con altri mezzi si comporta come uno si comporta come uno shared servershared server

Page 57: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 57

Struttura di un ORBStruttura di un ORB

Diversi tipi di ORBDiversi tipi di ORBStruttura di un ORBStruttura di un ORB

Diversi tipi di ORBDiversi tipi di ORB

Client & Implementation

Resident

Single-Process Library Resident

Server or Operating-System Based

IDL

Client Obj Impl

IDL

ORB

REQUEST

IDL

Client Obj Impl

IDL

ORB

REQUEST

IDL

Client

ORB

IDL

ORB

Obj Impl

REQUEST

Fonte: OMG

Page 58: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 58

Interoperabilità fra ORBInteroperabilità fra ORBInteroperabilità fra ORBInteroperabilità fra ORB

Lo standard CORBA 2.0 affronta il problema Lo standard CORBA 2.0 affronta il problema dell’interconnessione e dell’interoperabilità fra (sotto)sistemi dell’interconnessione e dell’interoperabilità fra (sotto)sistemi distribuiti realizzati con ORB di fornitori diversidistribuiti realizzati con ORB di fornitori diversi

Definisce un Definisce un Internet Inter-ORB ProtocolInternet Inter-ORB Protocol (IIOP), che (IIOP), che costituisce un protocollo comune che tutte le costituisce un protocollo comune che tutte le implementazioni devono implementare, o verso cui devono implementazioni devono implementare, o verso cui devono fornire “fornire “half-bridgehalf-bridge” opportuni” opportuni

Page 59: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 59

Interoperabilità fra ORBInteroperabilità fra ORBInteroperabilità fra ORBInteroperabilità fra ORB

IDL

Client Obj Impl

IDL

ORB

IDL

Client

IDL

ORB

Obj Impl

IDL

Client

ORB

IDL

ORB

Obj Impl

Fonte: OMG

Page 60: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 60

Semanticadellerichieste

Formatodeimessaggi

Livelloditrasporto

Protocolli e interoperabilitàProtocolli e interoperabilitàProtocolli e interoperabilitàProtocolli e interoperabilità

Applicazioni

CORBA IDL

General Inter-ORB Protocol

(GIOP)

Internet Inter-

ORB Protocol (IIOP) TCP/IP

OSINetwar

e IPX/SPX

DCE RPC

TCP/IP

DCE RPCOSI

...

Environment Specific Inter-ORB Protocols

(ESIOP)

Page 61: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 61

Protocolli e interoperabilitàProtocolli e interoperabilitàProtocolli e interoperabilitàProtocolli e interoperabilità

General Inter-ORB Protocol General Inter-ORB Protocol (GIOP)(GIOP) Definisce il formato dei messaggi che ORB di fornitori diversi Definisce il formato dei messaggi che ORB di fornitori diversi

possono scambiarsipossono scambiarsi Definisce un formato comune dei dati (Definisce un formato comune dei dati (Common Data Common Data

Representation, CDRRepresentation, CDR) che può essere trasmesso su una rete fra ) che può essere trasmesso su una rete fra piattaforme diversepiattaforme diverse

Internet Inter-ORB Protocol Internet Inter-ORB Protocol (IIOP)(IIOP) Specifica come i messaggi GIOP vengono trasmessi su una rete Specifica come i messaggi GIOP vengono trasmessi su una rete

TCP/IPTCP/IP Permette di connettere ORB diversi mediante InternetPermette di connettere ORB diversi mediante Internet

Environment Specific Inter-ORB Protocol Environment Specific Inter-ORB Protocol (ESIOP)(ESIOP) Permette di utilizzare protocolli di trasporto diversiPermette di utilizzare protocolli di trasporto diversi

Page 62: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 62

Scenari d’usoScenari d’uso

Server WWW e CORBAServer WWW e CORBAScenari d’usoScenari d’uso

Server WWW e CORBAServer WWW e CORBA

WEB Server

CG I

ProgramsIIOP (CORBA)TCL

HTTP-- HTML-- GIF, JPEG-- AV, WAV

Sea of Objects(CORBA)

WEB Browser

Applications

IIOP(CORBA)

PROGRAMS

Fonte: OMG

Page 63: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 63

Scenari d’usoScenari d’uso

Java e CORBAJava e CORBAScenari d’usoScenari d’uso

Java e CORBAJava e CORBA

WEB Server

CG I

ProgramsIIOP (CORBA)TCL

Sea of Objects(CORBA) IIOP

Java EnabledWEB Browser

Java Orblet

IIOP

PROGRAMS

HTTP-- HTML-- GIF, JPEG-- AV, WAV

IIOP

Fonte: OMG

Page 64: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 64

Scenari d’usoScenari d’uso

Browser e CORBABrowser e CORBAScenari d’usoScenari d’uso

Browser e CORBABrowser e CORBA

WEB Server

CG I

ProgramsIIOP (CORBA)TCL

HTTP-- HTML-- GIF, JPEG-- AV, WAV

Sea of Objects(CORBA)

WEB Browser

CORBA Enabled

IIOP

PROGRAMS

Fonte: OMG

Page 65: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 65

Windows app

COM/CORBA link

ORB

Uno scenario applicativo ragionevole deve prevederela presenza di componenti applicativi di tipo diverso

ed una infrastruttura in grado di farli interoperare.

CORBAserver

standaloneCORBAclient

ORB

JAVA/CORBAclient

JAVA VM (browser)

JAVA ORBlet

Fonte: OMG

Scenari d’usoScenari d’usoScenari d’usoScenari d’uso

Page 66: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 66

standaloneCORBAclient

Windows app

COM/CORBA link

ORB

Client CORBA standalone possono essere scritti inmolteplici linguaggi ed accedere a server scrittiin linguaggi diversi ed operanti sulle piattaforme

più disparate in modo trasparente.

ORB

IIOP

CORBAserver

JAVA/CORBAclient

JAVA VM (browser)

JAVA ORBlet

Scenari d’usoScenari d’usoScenari d’usoScenari d’uso

Page 67: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 67

standaloneCORBAclient

JAVA/CORBAclient

Windows app

JAVA VM (browser)

COM/CORBA link

ORBORB

CORBAserver

IIOP

JAVA ORBlet

Anche i client Java possono operare su piattaformediverse, ovunque sia disponibile un browser abilitato.

Scenari d’usoScenari d’usoScenari d’usoScenari d’uso

Page 68: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 68

standaloneCORBAclient

Windows app

COM/CORBA link

ORB

Un client scritto in Java può contemporaneamente accederea server Java mediante RMI. Se il client è un applet può

anche sfruttare le funzionalità del browser (multimedialità,audio, video, HTML, …).

ORB

CORBAserver

HTTP

JAVA/RMIserver

HTTPserver

JAVA/CORBAclient

JAVA VM (browser)

JAVA ORBlet

Scenari d’usoScenari d’usoScenari d’usoScenari d’uso

Page 69: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 69

standaloneCORBAclient

Lo standard OMG per l’interoperabilità COM/CORBAconsente ad una applicazione Windows di accedere ad un

server CORBA mediante IIOP o DCOM. Contemporaneamente,l’applicazione Windows può accedere ad un server DCOM.

ORB

CORBAserver

IIOP or DCOM

JAVA/CORBAclient

JAVA VM (browser)

JAVA ORBlet

DCOMDCOMserver

Windows app

COM/CORBA

ORB

Scenari d’usoScenari d’usoScenari d’usoScenari d’uso

Page 70: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 70

L’architettura di riferimento (OMA)L’architettura di riferimento (OMA)L’architettura di riferimento (OMA)L’architettura di riferimento (OMA)

Object Request Broker (ORB)

Object Services

Application Interfaces Domain Interfaces Common Facilities

Page 71: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 71

Object ServicesObject ServicesObject ServicesObject Services

Naming ServiceNaming Service: mantiene i collegamenti fra nomi simbolici : mantiene i collegamenti fra nomi simbolici e riferimenti programmativi agli oggetti (name server)e riferimenti programmativi agli oggetti (name server)

Event ServiceEvent Service: generazione, trasmissione, registrazione, : generazione, trasmissione, registrazione, ricezione di eventiricezione di eventi

Life Cycle ServiceLife Cycle Service: copia, spostamento e rimozione di grafi : copia, spostamento e rimozione di grafi di oggetti collegatidi oggetti collegati

Relationship ServiceRelationship Service: visita di grafi di oggetti collegati : visita di grafi di oggetti collegati (senza attivare i singoli oggetti), gestione della consistenza(senza attivare i singoli oggetti), gestione della consistenza

Persistent Object ServicePersistent Object Service: supporto alla gestione dello stato : supporto alla gestione dello stato persistente degli oggettipersistente degli oggetti

Page 72: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 72

Object ServicesObject ServicesObject ServicesObject Services

Transaction ServiceTransaction Service: gestione di transazioni in ambiente : gestione di transazioni in ambiente distribuito distribuito

Concurrency Control ServiceConcurrency Control Service: accesso coordinato a risorse : accesso coordinato a risorse condivise (lock) in ambiente distribuitocondivise (lock) in ambiente distribuito

Externalization ServiceExternalization Service: salvataggio e ripristino dello stato : salvataggio e ripristino dello stato di un oggetto (su supporti di salvataggio “rimovibili”)di un oggetto (su supporti di salvataggio “rimovibili”)

Licensing ServiceLicensing Service: controllo sull’uso di “proprietà : controllo sull’uso di “proprietà intellettuali”intellettuali”

Query ServiceQuery Service: interrogazioni su collezioni di oggetti: interrogazioni su collezioni di oggetti Property ServiceProperty Service: creazione e gestione di insiemi coppie : creazione e gestione di insiemi coppie

nome-valore (attributi o proprietà)nome-valore (attributi o proprietà)

Page 73: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 73

Object ServicesObject ServicesObject ServicesObject Services

Security ServiceSecurity Service: identificazione ed autenticazione, : identificazione ed autenticazione, autorizzazione e controllo degli accessi, auditing, sicurezza autorizzazione e controllo degli accessi, auditing, sicurezza nella comunicazione, non ripudionella comunicazione, non ripudio

Time ServiceTime Service Collection ServiceCollection Service Trader ServiceTrader Service: offerta di servizi di un service provider: offerta di servizi di un service provider

Page 74: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 74

FrameworksFrameworksFrameworksFrameworks

A differenza dei componenti elementari citati, un framework A differenza dei componenti elementari citati, un framework costituisce un componente di livello più alto, che offre costituisce un componente di livello più alto, che offre funzionalità direttamente utilizzabili dall’utente finalefunzionalità direttamente utilizzabili dall’utente finale

All’interno di un framework si ritrovano oggetti che All’interno di un framework si ritrovano oggetti che implementano le interfacce dei componenti elementari citatiimplementano le interfacce dei componenti elementari citati

Page 75: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 75

Object Request Broker (ORB)

FrameworksFrameworksFrameworksFrameworks

AI

OS

CF

DI OS

CF

DIOS CF

OS OSObjectFramework

Page 76: CORBA;2.ppt Object Management Group’s Object Management Architecture CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, 2 - 20133 Milano Tel. (02) 23954 270.

CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 76

BibliografiaBibliografiaBibliografiaBibliografia

IONA Technologies. IONA Technologies. OrbixWeb Programming GuideOrbixWeb Programming Guide. . Release 2.0.Release 2.0.

OMG. OMG. A Discussion of the Object Management A Discussion of the Object Management ArchitectureArchitecture. January 1997. http://www.omg.org. January 1997. http://www.omg.org

OMG. OMG. The Common Request Broker: Architecture and The Common Request Broker: Architecture and SpecificationSpecification. Revision 2.0, July 1995, Updated July 1996. Revision 2.0, July 1995, Updated July 1996

R. Orfali, D. Harkey, J. Edwards. R. Orfali, D. Harkey, J. Edwards. The Essential Distributed The Essential Distributed Objects Survival GuideObjects Survival Guide. John Wiley & Sons, 1996. John Wiley & Sons, 1996

Visigenic. Visigenic. VisiBroker for Java. Programmer’s GuideVisiBroker for Java. Programmer’s Guide Release 2.5, 1997Release 2.5, 1997