corba-master;1.ppt introduzione a corba fabiano cattaneo - cefriel via fucini, 2 - 20133 milano tel....
TRANSCRIPT
CORBA-Master;1.ppt
Introduzione a CORBAIntroduzione a CORBAIntroduzione a CORBAIntroduzione a CORBA
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]
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)
CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 3
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à
CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 4
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
CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 5
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
CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 6
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
CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 7
Cos’è CORBA (in breve)Cos’è CORBA (in breve)Cos’è CORBA (in breve)Cos’è CORBA (in breve)
CORBA è l’architettura di riferimento di un CORBA è l’architettura di riferimento di un Object Request Object Request BrokerBroker (ORB) definita da OMG (consorzio di 700+ aziende) (ORB) definita da OMG (consorzio di 700+ aziende)
Un ORB è un Un ORB è un software bussoftware bus attraverso cui degli oggetti attraverso cui degli oggetti interagiscono con altri oggetti in modo trasparente rispetto interagiscono con altri oggetti in modo trasparente rispetto alla distribuzione fisica su calcolatori diversialla distribuzione fisica su calcolatori diversi
Un oggetto si manifesta al mondo esterno (gli altri oggetti) Un oggetto si manifesta al mondo esterno (gli altri oggetti) come un’interfaccia (insieme di metodi)come un’interfaccia (insieme di metodi)
Una particolare istanza di un oggetto è univocamente Una particolare istanza di un oggetto è univocamente identificabile mediante un identificabile mediante un object referenceobject reference
Il Il clientclient di un oggetto CORBA ne acquisisce l’ di un oggetto CORBA ne acquisisce l’object object referencereference e può richiamare i metodi dell’interfaccia come se e può richiamare i metodi dell’interfaccia come se si trattasse di un oggetto “locale”si trattasse di un oggetto “locale”
La “magia” è compito dell’ORB...La “magia” è compito dell’ORB...
CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 8
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
CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 9
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
CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 10
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
CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 11
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)
CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 12
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
CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 13
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
CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 14
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
CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 15
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
CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 16
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
CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 17
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
CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 18
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
CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 19
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
CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 20
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
Un oggetto Un oggetto Un’interfacciaUn’interfaccia
Il modello ad oggettiIl modello ad oggetti
InterfacceInterfacceIl modello ad oggettiIl modello ad oggetti
InterfacceInterfacce
CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 21
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
CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 22
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
CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 23
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
CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 24
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)
CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 25
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
CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 26
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à
CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 27
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
CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 28
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
CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 29
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
CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 30
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”
CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 31
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
CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 32
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
CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 33
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
CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 34
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
CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 35
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
CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 36
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
CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 37
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
CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 38
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
CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 39
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))
CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 40
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
CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 41
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
CEFRIELCEFRIELFabiano Cattaneo - CORBAFabiano Cattaneo - CORBA 42
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