CORBA (Common Object Request Broker Architecture) è la specifica di un modello di riferimento per middleware ad oggetti, che fa parte della cosiddetta Object Management Architecture (OMA), definita dall’Object Management Group (OMG).
OMG è un’organizzazione nata nel 1989, oggi formata da molte centinaia di membri tra industrie, consorzi ed università, con l’obiettivo di standardizzare tecnologie e metodologie relative a sistemi orientati agli oggetti, in modo da ridurre la complessità, abbassare i costi e supportare l’interoperabilità e la cooperazione applicativa in ambiente distribuito eterogeneo.
OMA prevede quattro ambiti di standardizzazione da parte di OMG:
Il termine CORBA si riferisce in senso stretto all’ORB, talvolta in senso lato a tutta l’architettura OMA.
I quattro macro componenti
CORBA OBJECT REQUEST BROKER (ORB)
CORBA Services
CORBA Facilities
CORBA Domains
È il nucleo dell’architettura OMA.
Fornisce servizi per l’invocazione di metodi su oggetti.
Intermediario nelle interazioni tra oggetti:
L’ORB consiste di sottoprogrammi da compilare e poi collegare (staticamente o dinamicamente) agli oggetti (clienti e serventi).
Al programmatore l’ORB si presenta come un insieme di interfacce applicative (API) per l’invocazione di metodi su oggetti remoti.
Naming
Per la ricerca di oggetti a partire dal nome.
Pagine Bianche (White Pages) per gli oggetti distribuiti: nomi degli oggetti organizzati gerarchicamente:
Trading
Per la ricerca di oggetti a partire da specificate caratteristiche.
Pagine Gialle (Yellow Pages) per gli oggetti distribuiti: servizi degli oggetti organizzate in directory:
Events
Supporto allo scambio di eventi: modello produttori-consumatori.
Per la comunicazione: uno a molti o molti a molti: tramite intermediario (Event channel).
Security
Per disciplinare l’accesso alle risorse: politiche differenziabili per cliente:
Tramite Autenticazione dei clienti: firme digitali.
Transaction
Supporto alle transazioni che coinvolgono oggetti distribuiti: meccanismi di commit e roll back.
Relationship
Arricchimento dell’IDL con il meccanismo dell’associazione:
Lifecycle
Gestione del ciclo di vita degli oggetti (supporto alla creazione, copia, distruzione di oggetti distribuiti “complessi”).
Persistence
Supporto alla persistenza degli oggetti: interfaccia standard per qualsiasi tipo di DBMS.
Concurrency
Supporto alla concorrenza risorse condivise: accesso atomico agli oggetti condivisi:
Incapsulamento
Accorpamento di proprietà (attributi) e responsabilità (servizi) di un modulo software.
Separazione tra interfaccia e implementazione.
Nei linguaggi a oggetti non fortemente tipizzati (es.: Smalltalk):
Nei linguaggi a oggetti tipizzati (es.: C++, Java):
In entrambi i casi un oggetto ha natura temporanea e locale all’applicazione in cui viene creato.
Concetti essenziali dell’orientamento agli oggetti in CORBA:
Oggetto CORBA
Modulo software che offre servizi invocabili da clienti remotamente.
Interfaccia descritta in IDL, contratto tra oggetto CORBA e clienti.
Implementazione in un qualsiasi linguaggio di programmazione.
Localizzazione (su un nodo del sistema distribuito) trasparente all’utilizzatore dei servizi.
Oggetto CORBA
Per espletare un servizio, può richiedere i servizi di altri oggetti.
Le proprietà (attributi in IDL) di un oggetto CORBA non sono da riguardare come la struttura dati incapsulata.
Ereditarietà
Ereditarietà in CORBA
Ereditarietà tra interfacce (interface inheritance)
Polimorfismo
In CORBA il concetto di polimorfismo è
Instanziazione
Un’applicazione CORBA su larga scala è costituita da insiemi di oggetti interagenti che possono risiedere su ORB di produttori differenti.
Lo standard definisce un modello architetturale per l’interoperabilità tra oggetti su ORB diversi, noto come CORBA Interoperability Architecture (IA).
Dominio ORB (ORB domain)
La IA definisce:
Due tipi di protocolli per le interazioni tra ORB
Attualmente sono definiti:
(CORBA Component Model, CCM)
È una delle principali innovazioni della specifica CORBA3.
Modello di sviluppo a componenti per la programmazione lato servente.
Volutamente simile al modello EJB di J2EE: EJB basato su Java, CCM pensato per la trasparenza del linguaggio.
Attori coinvolti nella produzione e utilizzo di componenti:
Aspetti principali del CCM
Specifica di un ambiente contenitore per l’esecuzione dei componenti.
Specifica di un linguaggio di descrizione per la persistenza dei componenti (Persistent State Definition Language, PSDL).
Specifica di un linguaggio di descrizione dei componenti (Component Implementation Definition Language, CIDL).
Specifica di un formato di distribuzione e di strumenti di configurazione per la produzione di componenti software riusabili.
Integrazione con EJB.
2. La modellazione a oggetti e il linguaggio UML (richiami)
3. Generalità su Java e la programmazione ad oggetti
6. Regole di traduzione da UML a Java/C++
7. Programmazione multi-thread
8. Sincronizzazione tra thread
9. Programmazione client-server con socket TCP/IP (Java networkin...
10. Programmazione di applicazioni client-server: il Pattern Proxy...
12. Design Patterns
13. Pattern architetturali - Esempi
14. Design pattern creazionali. Esempi
15. Design pattern strutturali. Esempi
16. Introduzione alle tecnologie middleware
17. Modelli di middleware: RPC, MOM, TP, TS
Baker S., CORBA Distributed Objects Using Orbix, Addison-Wesley, 1997.
Brose G., Vogel A., Duddy K., Java Programming with CORBA – Advanced Techniques for Building Distributed Applications, 3rd edition, OMG Press, John Wiley & Sons, 2001.
Henning M., Vinoski S., Advanced CORBA Programming with C++, Addison-Wesley, 1999.
Mowbray T.J., Malveau R.C., CORBA Design Patterns, OMG Press, John Wiley & Sons, 1997.
Mowbray T.J., Ruh W.A., Inside CORBA – Distributed Object Standards and Applications, Addison-Wesley, 1997.
Mowbray T.J., Zahavi R., The Essential CORBA, John Wiley & Sons, 1995.
Natarajan V., Reich S., Vasudevan B., Programming with VisiBroker – A Developer’s Guide to VisiBroker for Java, 2nd edition, John Wiley&Sons, 2000.
Orfali R., Harkey D., Instant CORBA, John Wiley & Sons, 1997.
Orfali R., Harkey D., Client/Server Programming with Java and CORBA, 2nd edition, John Wiley & Sons, 1998.
Siegel J., CORBA 3 – Fundamentals and Programming, 2nd edition, OMG Press, John Wiley & Sons, 2000.
Slama D., Garbis J., Russell P., Enterprise CORBA, Prentice Hall PTR, 1999.
Zahavi R., Enterprise Application Integration with CORBA – Component and Web-Based Solutions, OMG Press, John Wiley & Sons, 2000.
Object Management Group, Common Object Request Broker Architecture (CORBA) v. 2.6, 2001