Relazione

Transcript

Relazione
CORBA ( Common Object Request Broker Architecture )
consiste in un insieme di specifiche promosse e curate da
OMG (Object Management Group).
L’OMG è un consorzio internazionale no-profit di industrie
nel campo dell'Information Technology interamente
dedicato alla produzione di specifiche e di standard.
L’attività di OMG cominciò nel 1989 con soli 8 membri tra
cui Sun Microsystems, Philips, Hewlett-Packard e 3Com.
Le specifiche più conosciute sono UML e CORBA
il consorzio ha definito un framework: Object Management
Architecture (OMA)
OMA
E’ il centro di tutte le attività del consorzio, al suo interno
convivono tutte le tecnologie OMG.
Si “limita” alla definizione dettagliata delle interfacce di
tutti i componenti individuati.
I componenti OMA sono:
•
•
•
•
•
Object Request Broker (ORB)
Object Services (OS)
Common Facilities (CF)
Application Objects (AO)
L’Object Model (OM)
L’ARCHITETTURA CORBA
ORB (Object Request Broker) : Canale di comunicazione.
• ORB Interface : Interfaccia standard per tutte le
implementazioni di ORB.
• OA (Object Adapter) : Componente per la gestione degli
oggetti remoti.
• DII (Dinamic Invocation Interface) : Interfaccia standard per
invocazioni dinamiche lato client.
• DSI (Dinamic Skeleton Interface) : Interfaccia standard per
invocazioni dinamiche lato server.
• SII (Static Invocation Interface) : Interfaccia standard per
invocazioni statiche lato client.
• SSI (Static Skeleton Interface) : Interfaccia standard per
invocazioni statiche lato server.
• Interface Repository : Contenitore per le interfaccie IDL
degli oggetti noti a tempo di esecuzione.
• Implementation Repository : Contenitore per le interfaccie
IDL degli oggetti noti a tempo di esecuzione e loro effettiva
implementazione.
L’ORB
Rappresenta l’infrastruttura di comunicazione degli oggetti
rendendo trasparente la distribuzione nella comunicazione e
garantendo l'interoperabilità e la portabilità delle
applicazioni in un ambiente distribuito eterogeneo.
L’Objects Request Broker (ORB) è una specie di bus
software (Open Software Bus)
La comunicazione tra ORB nella rete avviene tramite i
protocolli GIOP e IIOP che implementano il marshalling,
unmarshalling e la rappresentazione esterna dei dati.
Supporta la Trasparenza di Locazione così da nascondere
al client tutti i dettagli sulla localizzazione degli oggetti
sulla rete e sul loro linguaggio di implementazione.
La trasparenza di Comunicazione così da mascherare le
chiamate remote come semplici invocazioni locali.
GIOP
E’ un protocollo astratto che specifica
• un insieme di tipi di messaggi utilizzabili tra un client e
un server
• una sintassi standard nel trasferimento dati delle
interfacce IDL
• un formato standard per ogni messaggio utilizzabile.
In GIOP sono definiti otto tipi di messaggi (Request,
CancelRequest, LocateRequest, Reply, LocateReply,
CloseConnection, MessageError, Fragment).
Header contiene l’indicatore del tipo del messaggio e la sua
dimensione
Body contiene il messaggio vero e proprio
l’interazione client/server è di tipo senza connessione
GIOP richiede un sistema di trasporto con connessione (es:
TCP/IP)
IIOP
E’ il mapping specifico di GIOP sul protocollo TCP/IP
I messaggi IIOP contengono inoltre informazioni di
servizio (alcuni aspetti del Security Service: codifica)
Interface Definition Language (IDL)
OMG ha definito il mapping dell'IDL su diversi linguaggi
di programmazione, quali C, C++, java, Smalltalk, ADA,
Cobol, Objective-C
Tramite un compilatore IDL si ottengono:
• file contenenti del codice di supporto per l’aggancio
all’ORB
• lo stub (per il client)
• lo skeleton (per il server)
Stub e skeleton realizzano le funzionalità di marshalling e
unmarshalling.
Typedef (tipi definiti dall’utente)
Struct (record)
Enum (tipi enumerati)
Array (tabelle)
Sequences (liste)
Any (tipo universale)
Ereditarietà
Upcasting (automatico)
Downcasting (esplicitato)
No polimorfismo e overloading
Eccezioni (raises)
COMPLETED_YES, COMPLETED_NO, COMPLETED_MAYBE
Interfacce statiche
Static Invocation Interface (SII)
Interfaccia per inviare una request ad un oggetto remoto
conoscendone la definizione dell’interfaccia IDL descritta
nello stub.
Deve linkare lo stub.
Gli stub sono gestiti dall’ORB
Funzionamento:
• Il client fa una richiesta (Object Reference).
• L’ORB la intercetta, crea proxy object locale sul client.
SII è basato sui pattern:
• Active Object pattern
• Proxy pattern
• Adapter pattern
Static Skeleton Interface (SSI)
Controparte lato server di SII
Funzionamento:
• L’ORB trasporta la richiesta verso un oggetto server
• Lo skeleton la intercettata e la consegna all’oggetto
richiesto.
Si occupa di tradurre la sintassi usata nel linguaggio in cui è
implementato l’oggetto remoto.
Pro e Contro
Il metodo di invocazione statico (SII e SSI) ha dei vantaggi:
• Facilità di programmazione.
• Controllo di tipo più robusto (stub e skeleton sono
specifici).
• Ottime prestazioni (non si richiede l’uso dell’Interface
Repository).
… ha anche dei vantaggi:
• Sono meno flessibili (ricompilazione del client in caso
di modifiche)
• Permettono unicamente il metodo di invocazione
sincrono.
Interfacce dinamiche
Dynamic Invocation Interface (DII)
Funzionamento:
• Ottenere un riferimento all’oggetto
• Ottenere l’interfaccia
• Creare la lista di parametri
• Creare la Request
• Invocare il metodo
o Invoke(). Invocazione sincrona. Il client rimane
bloccato fino all’arrivo della risposta.
o Send_oneway().
Invocazione asincrona senza
risposta (AMI Asynchronous Method Invocation).
Il client prosegue l’elaborazione dopo aver
invocato la richiesta, senza recuperare la risposta
che per questo non viene neanche inviata dal
server.
o Send_deferred(). Invocazione sincrona differita.
Il client non si blocca dopo l’invocazione ma può
reperire successivamente la risposta
Dynamic Skeleton Interface (DSI)
E’ la controparte lato server della DII.
Permette di creare oggetti server non legati ad un
particolare skeleton.
Gli oggetti costruiti attraverso la DSI possono ricevere
richieste da qualsiasi stub.
Pro e Contro
Il metodo di invocazione dinamico (DII e DSI) ha dei
vantaggi:
• Si possono invocare servizi e dati non noti al tempo
della compilazione.
• Offre alta flessibilità al client.
• Facilità di aggiornamento del sistema.
… ha anche dei vantaggi:
• Ci vuole molto lavoro per la ricerca dell’interfaccia
necessaria, la costruzione della richiesta, l’invocazione
della stessa.
Object Adapter (OA)
L’OA è il meccanismo con cui gli oggetti interagiscono con
l’ORB.
La sua principale attività è quella di attivare gli oggetti.
Possiamo riconoscere cinque fasi:
1. Il client attraverso lo stub invoca il metodo all’ORB.
2. L’ORB notifica l’invocazione all’OA che attiva
l’oggetto.
3. L’oggetto si registra e si dichiara pronto.
4. L’OA passa l’invocazione allo skeleton che spacchetta
i parametri e li fornisce all’oggetto.
5. L’implementazione esegue il metodo e restituisce i
risultati o le eccezioni al client.
Metodi di attivazione
Portable Object Adapter (POA)
Ha sostituito a partire dalla versione 2.2 della specifica, il
Basic Object Adapter (BOA).
BOA è risultato lacunoso sotto gli aspetti di portabilità e di
flessibilità.
POA corregge questo problema.
Tutti i server hanno almeno un POA, chiamato RootPOA,
al quale possono esserne aggiunti altri, secondo una
struttura ad albero, il tutto gestito dal POAManager.
Relazione tra RootPOA, POA figli, e POAManager
Relazione tra ORB, POAManager, POA e Servant
Interface Repository
E’ un servizio che rende disponibili a tempo di esecuzione,
alle applicazioni client, le definizioni IDL degli oggetti.
E’ possibile utilizzare oggetti la cui interfaccia non sia nota
a tempo di compilazione.
Con il metodo get_interface_def, è possibile ottenere un
oggetto di tipo InterfaceDef che fornisce tutte le
informazioni sulla struttura di una interfaccia registrata
nell’IR.
Implementation Repository
Contiene informazioni che permettono all’ORB di
localizzare e attivare le implementazioni degli oggetti.
Se non si conosce lo stato di attivazione del server che
implementa l’oggetto usando l’Implementation Repository,
si è in grado di attivare l’oggetto per far sì che riceva la
richiesta.
OBJECT SERVICES
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
Naming Service
Event Service
LifeCycle Service
Persistence Service
Externalization Service
Concurrency Control Service
Transaction Service
Relationship Service
Property Service
Query Service
Licensing Service
Time Service
Security Service
Trader Service
Object Collection Service