CORBA-Master;1.ppt Introduzione a CORBA Fabiano Cattaneo - CEFRIEL Via Fucini, Milano Tel. (02) FAX (02)
CEFRIEL Fabiano Cattaneo - CORBA 2 Indice del corso e prerequisiti l Indice n Il contesto e le motivazioni n L’architettura concettuale di riferimento n Il modello ad oggetti n Common Object Request Broker Architecture n Un esempio l Prerequisiti n Concetti base dei sistemi object-oriented n Linguaggio Java (per l’esempio)
CEFRIEL Fabiano Cattaneo - CORBA 3 Il problema l Ci si trova a dover realizzare: n sistemi distribuiti su vasta scala n sistemi eterogenei, costituiti da piattaforme hardware e software estremamente diverse n è necessario che i componenti del sistema distribuito possano interoperare l L’approccio OMG n Definire un’architettura di riferimento object oriented, basata sul concetto di “interfaccia” di un componente n La conformità con l’architettura di riferimento dovrebbe garantire l’interoperabilità
CEFRIEL Fabiano Cattaneo - CORBA 4 Perché object oriented? l Dal punto di vista dell’utente n Facilità d’uso delle interfacce utenti object-oriented n Integrabilità di componenti sviluppati indipendentemente n Condivisione di oggetti che svolgono funzioni comuni n Wrapping di applicazioni legacy (anche non object oriented) l Dal punto di vista dello sviluppatore: n Modularizzazione delle applicazioni, separazione delle interfacce, costruzione incrementale n Riuso
CEFRIEL Fabiano Cattaneo - CORBA 5 Costruire applicazioni con i componenti l L’oggetto o componente sarà l’unità di produzione, distribuzione e manutenzione. l L’oggetto starà su un bus software (come CORBA o COM) e attraverso questo bus riceverà richieste di servizio e invierà le sue richieste e suoi risultati. l Quindi il componente è anche l’unità di deployment. l Le architetture software cambieranno in accordo con questo nuovo scenario... l … e così pure le modalità di packaging, le licenze e la manutenzione
CEFRIEL Fabiano Cattaneo - CORBA 6 Primo: gli standard l OMG (Object Management Group), attivo dal 1989 nella definizione del bus software n uno dei primi esempi di middleware ad oggetti n ORB (Object Request Broker), permette di invocare metodi appartenenti ad oggetti remoti, in modo statico o dinamico n CORBA 2.0 (1994), architettura inter-ORB basata su TCP/IP (e opzionalmente su DCE) n il bus è estensibile con servizi modulari (es. comunicazione ad eventi, transazioni, licenze, ecc.) n contatti con altre organizzazioni di standardizzazione e produttori di software assicurano un’ampia accettazione dello standard
CEFRIEL Fabiano Cattaneo - CORBA 7 Cos’è CORBA (in breve) l CORBA è l’architettura di riferimento di un Object Request Broker (ORB) definita da OMG (consorzio di 700+ aziende) l Un ORB è un software bus attraverso cui degli oggetti interagiscono con altri oggetti in modo trasparente rispetto alla distribuzione fisica su calcolatori diversi l Un oggetto si manifesta al mondo esterno (gli altri oggetti) come un’interfaccia (insieme di metodi) l Una particolare istanza di un oggetto è univocamente identificabile mediante un object reference l Il client di un oggetto CORBA ne acquisisce l’object reference e può richiamare i metodi dell’interfaccia come se si trattasse di un oggetto “locale” l La “magia” è compito dell’ORB...
CEFRIEL Fabiano Cattaneo - CORBA 8 Scenari d’uso Server WWW e CORBA WEB Server C G I Programs IIOP (CORBA) TCL HTTP -- HTML -- GIF, JPEG -- AV, WAV Sea of Objects (CORBA) WEB Browser Applications IIOP (CORBA) PROGRAMSPROGRAMS Fonte: OMG
CEFRIEL Fabiano Cattaneo - CORBA 9 Scenari d’uso Java e CORBA WEB Server C G I Programs IIOP (CORBA) TCL Sea of Objects (CORBA) IIOP Java Enabled WEB Browser Java Orblet IIOP PROGRAMSPROGRAMS HTTP -- HTML -- GIF, JPEG -- AV, WAV IIOP Fonte: OMG
CEFRIEL Fabiano Cattaneo - CORBA 10 Scenari d’uso Browser e CORBA WEB Server C G I Programs IIOP (CORBA) TCL HTTP -- HTML -- GIF, JPEG -- AV, WAV Sea of Objects (CORBA) WEB Browser CORBA Enabled IIOP PROGRAMSPROGRAMS Fonte: OMG
CEFRIEL Fabiano Cattaneo - CORBA 11 Object Request Broker (ORB) Object Services Application InterfacesDomain InterfacesCommon Facilities L’architettura di riferimento (OMA)
CEFRIEL Fabiano Cattaneo - CORBA 12 l Object Request Broker (ORB): permette la comunicazione in un ambiente distribuito (software bus) l Object Services (OS): servizi di applicabilità generale, utilizzabili per la costruzione di sistemi distribuiti l Common Facilities (CF): interfacce per funzionalità comuni a molti domini applicativi (mercati “orizzontali”: compound document, user interface, system management,...) l Domain Interfaces (DI): interfacce per funzionalità specifiche di un dominio (mercati “verticali”: business objects, healthcare, telecommunication, finance,...) l Application Interfaces (AI): interfacce non standardizzate, dipendenti dall’applicazione (specificate ed utilizzate da un singolo produttore) L’architettura di riferimento Componenti
CEFRIEL Fabiano Cattaneo - CORBA 13 l CORBA è l’architettura di riferimento per la costruzione di ORB (software bus) l Gli oggetti che si affacciano sul bus descrivono i servizi che mettono a disposizione definendone le interfacce mediante un Interface Definition Language (IDL) l Le interfacce descritte con IDL costituiscono delle specifiche; le implementazioni possono essere realizzate con un linguaggio qualsiasi (per cui esista un mapping IDL) l Oggetti con implementazioni scritte in linguaggi diversi possono interoperare (richiamare reciprocamente i metodi) l Oggetti collegati ad ORB diversi (anche di venditori diversi) possono interoperare (CORBA 2.0) L’architettura di riferimento ORB e CORBA
CEFRIEL Fabiano Cattaneo - CORBA 14 l Sono i “blocchi base” che consentono di costruire applicazioni distribuite l La specifica di un Object Service è costituita da un insieme di interfacce (IDL) e dalla descrizione della loro semantica (inglese) L’architettura di riferimento ORB e CORBA
CEFRIEL Fabiano Cattaneo - CORBA 15 Il modello ad oggetti l OMA definisce un modello parziale della computazione che include le caratteristiche principali della tecnologia ad oggetti l Un sistema ad oggetti è visto come un insieme di oggetti in cui i client possono richiedere un servizio agli oggetti server senza sapere in che modo il server realizza il servizio (qual è il codice da eseguire, qual è il formato dei dati) l Un client è schermato da un’interfaccia rispetto al modo in cui un server è realizzato
CEFRIEL Fabiano Cattaneo - CORBA 16 l Un oggetto in OMA è una entità che: n incapsula dati e operazioni n ha un’interfaccia ben definita n è univocamente identificabile n è in grado di eseguire i servizi richiesti da un client n può rappresentare un oggetto del mondo reale l Nota: nella visione OMA i client non devono necessariamente essere oggetti, anche se nelle situazioni più comuni un’entità si può comportare sia da client che da server Il modello ad oggetti Concetti base: oggetti
CEFRIEL Fabiano Cattaneo - CORBA 17 Il modello ad oggetti Scambio di messaggi l Attenzione: questo è un concetto generale, non di OMA l La comunicazione fra oggetti in un sistema ad oggetti avviene (logicamente) mediante scambio di messaggi l L’oggetto client invia un messaggio all’oggetto server l Il messaggio identifica, oltre al destinatario (server), anche l’operazione (servizio) che viene richiesta e porta con sé i parametri necessari al server per svolgerla l L’oggetto server che riceve il messaggio sceglie di eseguire un particolare metodo (cioè codice) in base all’operazione richiesta
CEFRIEL Fabiano Cattaneo - CORBA 18 l Nella terminologia OMA, una richiesta (request) viene inviata da un client ad un oggetto per richiedere un servizio l Una richiesta è costituita dal nome di una operazione, dall’identificazione dell’oggetto server, dai parametri dell’operazione, se necessari, e dal contesto in cui svolgere l’operazione, se necessario l Ricevuta una richiesta, un oggetto esegue il servizio relativo nel contesto specificato ed eventualmente restituisce i risultati prodotti o segnala che si è verificata una condizione anomala Il modello ad oggetti Richieste
CEFRIEL Fabiano Cattaneo - CORBA 19 l I parametri di una richiesta sono costituiti dai valori appartenenti ai tipi definiti dal linguaggio IDL l Un particolare valore può identificare un oggetto, ed in questo caso costituisce il nome dell’oggetto (object name) l Se il nome di un oggetto identifica affidabilmente, ogni volta che viene utilizzato, un unico oggetto, viene anche detto riferimento dell’oggetto (object reference) Il modello ad oggetti Valori e oggetti
CEFRIEL Fabiano Cattaneo - CORBA 20 l Un’interfaccia è un’insieme di operazioni che un client può richiedere ad un oggetto l Un oggetto soddisfa un’interfaccia se è in grado di eseguire tutte le operazioni appartenenti all’interfaccia l Un oggetto può soddisfare più di una interfaccia l Un’interfaccia può specificare anche degli attributi che corrispondono ad un’operazione di lettura e ad una di scrittura (se l’attributo non è read-only) l Le interfacce sono descritte utilizzando il linguaggio IDL Un oggetto Un’interfaccia Il modello ad oggetti Interfacce
CEFRIEL Fabiano Cattaneo - CORBA 21 l Un’operazione è una entità con un nome che identifica un particolare servizio che un client può richiedere ad un oggetto l Il nome dell’operazione è chiamato operation identifier l Un’operazione è caratterizzata dalla propria signature: n l’elenco dei (tipi dei) parametri dell’operazione n il (tipo del) risultato n le eccezioni che l’operazione può sollevare n il contesto in cui può essere eseguita n la semantica dell’esecuzione Il modello ad oggetti Operazioni
CEFRIEL Fabiano Cattaneo - CORBA 22 l Un oggetto server deve poter eseguire le attività corrispondenti alle richieste che riceve dai client l È l’implementazione di un oggetto (object implementation) che esegue tali attività l Durante l’esecuzione delle operazioni l’implementazione di un oggetto può eseguire delle computazioni, può modificare il proprio stato interno e può inviare richieste ad altri oggetti Il modello ad oggetti Oggetti server
CEFRIEL Fabiano Cattaneo - CORBA 23 l Il servizio richiesto ad un oggetto viene svolto mediante l’esecuzione di codice (metodo) da parte dell’implementazione dell’oggetto l L’attivazione di un metodo è una particolare esecuzione di un metodo l Se l’oggetto (lo stato dell’oggetto) non è disponibile per una data attivazione di metodo, è innanzi tutto necessario ripristinare questo stato (attivazione dell’oggetto) l Il processo inverso si chiama disattivazione Il modello ad oggetti Esecuzione dei servizi
CEFRIEL Fabiano Cattaneo - CORBA 24 Object Request Broker (ORB) Object Services Application InterfacesDomain InterfacesCommon Facilities L’architettura di riferimento (OMA)
CEFRIEL Fabiano Cattaneo - CORBA 25 CORBACORBA l Common Object Request Broker Architecture (CORBA): definisce l’interfaccia programmatica dell’ORB l Interface Definition Language (IDL): è il linguaggio con cui si descrivono le interfacce degli oggetti che si affacciano sul bus l L’interfaccia IDL nasconde ai client le modalità (linguaggio) con cui sono realizzati i server: separa l’interfaccia dall’implementazione l L’ORB rende trasparente ai client le modalità con cui localizzare, attivare e comunicare con i server
CEFRIEL Fabiano Cattaneo - CORBA 26 L’IDLL’IDL l Consente di separare le interfacce dalle implementazioni degli oggetti: n supporta l’ereditarietà multipla ed il controllo statico dei tipi n è indipendente dal linguaggio di programmazione utilizzato per implementare gli oggetti (mapping per linguaggi diversi: C, C++, SmallTalk, Java,...) n non è un linguaggio di programmazione, ma un linguaggio per la specifica di interfacce l È definito in modo da consentire un utilizzo sia statico che dinamico l È uno dei fattori che consentono l’interoperabilità
CEFRIEL Fabiano Cattaneo - CORBA 27 l L’IDL ha una sintassi simile a quella del C++ l Il compilatore IDL supporta il pre-processing in stile C++ (#include) l Una specifica scritta in IDL consiste in un insieme di: n dichiarazioni di tipi n dichiarazioni di costanti n dichiarazioni di eccezioni n dichiarazioni di interfacce n dichiarazioni di moduli L’IDLL’IDL
CEFRIEL Fabiano Cattaneo - CORBA 28 l Un’interfaccia IDL definisce l’insieme di tipi, costanti, eccezioni, attributi ed operazioni messi a disposizione da un oggetto server l Ogni interfaccia ha un nome e può essere definita a partire da una o più interfacce esistenti (ereditarietà multipla) n l’interfaccia derivata può aggiungere nuovi elementi o ridefinire elementi esistenti n non è possibile ereditare da interfacce che definiscono lo stesso attributo o la stessa operazione n le ambiguità si risolvono qualificando l’elemento con il nome dell’interfaccia (::) L’IDL: interfacce
CEFRIEL Fabiano Cattaneo - CORBA 29 Object Request Broker (ORB) COBOLJavaCC++SmalltalkAda IDL IDL e interoperabilità l Attualmente esistono correlazioni (binding) fra IDL e: C, C++, Ada, Smalltalk, Java (COBOL, ObjectiveC) l È possibile specificare in IDL: n attributi e metodi di un oggetto n gerarchie di ereditarietà n eccezioni che un metodo può sollevare
CEFRIEL Fabiano Cattaneo - CORBA 30 Il ruolo dell’ORB l Costituisce un punto di contatto locale e ben identificabile attraverso cui i client possono invocare metodi dei server l Smista le richieste fra oggetti distribuiti l “Comprende” l’IDL e mantiene un repository contenente le interfacce e le implementazioni registrate nel sistema l Mantiene le informazioni di cui sopra all’interno di un sistema distribuito l Consente di costruire una “rete di ORB”
CEFRIEL Fabiano Cattaneo - CORBA 31 Object Request Broker Core Client IDL stub Client Dynamic Invocation Client IDL stub ORB Interface Static Skeleton Implementation Repository Interface Repository Object implementation Identica per tutti gli ORB Dynamic Invocation Dipende dall’interface del server Object Adapter Molteplici Object Adapter Struttura di un ORB
CEFRIEL Fabiano Cattaneo - CORBA 32 l Il client è un’applicazione scritta in un linguaggio per cui sia stato definito un binding con IDL (o che consenta di richiamare procedure scritte in quel linguaggio) l Non deve necessariamente essere un’applicazione object- oriented (es. Visual Basic, 4GL) l Client ed object implementation possono essere localizzati ovunque (il client non deve essere a conoscenza della localizzazione dell’object implementation) l Un oggetto può operare contemporaneamente da client e da server l Un client può invocare un metodo di un oggetto remoto di cui abbia un object reference e di cui conosca l’interfaccia Struttura di un ORB Client
CEFRIEL Fabiano Cattaneo - CORBA 33 Struttura di un ORB Client IDL stub l Ogni stub corrisponde ad un’operazione del server che il client può invocare usando i meccanismi tipici del linguaggio di programmazione (chiamata di subroutine) l Lo stub viene costruito automaticamente a partire dall’IDL dell’interfaccia (IDL compiler) nel linguaggio prescelto l Dal punto di vista del client, lo stub è una chiamata di procedura locale l All’interno dello stub, vengono codificati (marshaling) i parametri da inviare al server, vengono decodificati i risultati ricevuti e vengono ri-sollevate le eccezioni sollevate dal server
CEFRIEL Fabiano Cattaneo - CORBA 34 Struttura di un ORB Dynamic invocation l Mediante una Dynamic Invocation Interface, in alternativa all’utilizzo di uno stub precompilato, il client può: n venire a conoscenza durante l’esecuzione dell’interfaccia di un oggetto n costruire ed inviare dinamicamente una richiesta per richiedere lo svolgimento di un’operazione qualsiasi l Dal lato server (Dynamic Skeleton Interface) n Permette ad un server di ricevere richieste senza aver dovuto compilare in precedenza l’interfaccia IDL l Un server non può distinguere se una richiesta è stata inviata da uno stub o mediante DII ed un client non può distinguere se un server risponde mediante uno skeleton o DSI
CEFRIEL Fabiano Cattaneo - CORBA 35 Struttura di un ORB Interface repository l Contiene la descrizione delle interfacce definite nel sistema l Può essere interrogato (da un oggetto, durante l’esecuzione) per ottenere informazioni sulle interfacce, sui metodi che le compongono, sui parametri l Le informazioni ottenute possono essere utilizzate per costruire dinamicamente le richieste (DII) l Gli oggetti presenti nel sistema possono anche aggiungere e modificare le informazioni memorizzate nel repository l Il repository consente al sistema di “auto-descriversi” l I servizi offerti dall’interface repository sono descritti mediante interfacce specificate in IDL
CEFRIEL Fabiano Cattaneo - CORBA 36 Invocazione statica o dinamica? l Gli stub statici: n possono essere utilizzati solo se si conoscono a priori i metodi che si vogliono invocare (compile time) n il loro utilizzo è praticamente trasparente al programmatore n consente controlli statici di correttezza n è efficiente l L’invocazione dinamica: n non richiede di conoscere i metodi (interfacce) prima dell’esecuzione n consente di scrivere codice generico
CEFRIEL Fabiano Cattaneo - CORBA 37 Struttura di un ORB ORB Interface l Consiste in un insieme di API di servizi offerti dall’ORB, utili sia per il client che per il server l Fra le API offerte vi sono quelle che operano direttamente su object reference n get_interface per ottenere una descrizione dell’interfaccia dell’oggetto corrispondente n get_implementation per ottenere una descrizione dell’object implementation corrispondente n is_nil per verificare se l’object reference identifica effettivamente un oggetto
CEFRIEL Fabiano Cattaneo - CORBA 38 Struttura di un ORB Static Implementation Skeleton l È uno dei meccanismi con cui un oggetto server riceve le richieste dei client (l’altro è il DSI) l Costituiscono un meccanismo analogo a quello degli stub: n decodificano i parametri e li forniscono al metodo invocato n ricevono il risultato o le eccezioni e li codificano per rispedirli al client l Come gli stub si ottengono come prodotto della compilazione di interfacce descritte in IDL
CEFRIEL Fabiano Cattaneo - CORBA 39 Struttura di un ORB Object Adapter l È il tramite fra il “mezzo trasmissivo” (ORB) ed object implementation l Supporta le operazioni più comunemente utilizzate da object implementation: n istanziazione di nuovi oggetti n attribuzione e gestione di object reference n ricezione delle richieste ed instradamento n registrazione nell’implementation repository l CORBA definisce un object adapter standard (Basic Object Adapter, BOA)
CEFRIEL Fabiano Cattaneo - CORBA 40 Struttura di un ORB Diversi tipi di BOA l Shared server n il BOA attiva un server non appena riceve una richiesta per un oggetto gestito da quel server n un unico server può gestire più oggetti l Unshared server n ogni oggetto viene gestito da un server diverso, attivato dal BOA quando riceve una richiesta per quell’oggetto l Server-per-method n viene creato un server per ogni richiesta ricevuta l Persistente server n il server non viene attivato dal BOA, ma con altri mezzi n si comporta come uno shared server
CEFRIEL Fabiano Cattaneo - CORBA 41 Struttura di un ORB Diversi 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
CEFRIEL Fabiano Cattaneo - CORBA 42 BibliografiaBibliografia l IONA Technologies. OrbixWeb Programming Guide. Release 2.0. l OMG. A Discussion of the Object Management Architecture. January l OMG. The Common Request Broker: Architecture and Specification. Revision 2.0, July 1995, Updated July 1996 l R. Orfali, D. Harkey, J. Edwards. The Essential Distributed Objects Survival Guide. John Wiley & Sons, 1996 l Visigenic. VisiBroker for Java. Programmer’s Guide Release 2.5, 1997