28.05.2013 Views

Studio e Realizzazione di Architetture Concorrenti per Sistemi ad ...

Studio e Realizzazione di Architetture Concorrenti per Sistemi ad ...

Studio e Realizzazione di Architetture Concorrenti per Sistemi ad ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Architetture</strong> <strong>Concorrenti</strong> in prodotti a larga <strong>di</strong>ffusione - CORBA 23<br />

1. La scelta <strong>di</strong> un linguaggio unico <strong>per</strong> specificare le interfacce degli oggetti coinvolti<br />

nell'interazione in rete: in modo che sia il client, sia il server sappiano,<br />

univocamente e senza ambiguità <strong>di</strong> sorta, quali richieste possono essere invocate<br />

sull'oggetto.<br />

2. La scelta <strong>di</strong> un protocollo comune <strong>per</strong> effettuare le comunicazioni vere e proprie<br />

attraverso una generica rete.<br />

CORBA si fonda su IDL (Interface Definition Language) anch'esso definito da OMG<br />

<strong>per</strong> <strong>di</strong>sciplinare la descrizione delle interfacce (con i loro meto<strong>di</strong>, parametri, tipi <strong>di</strong> dati<br />

<strong>di</strong> ritorno, etc.), e propone IIOP (Internet Inter-ORB Protocol) come protocollo <strong>di</strong><br />

comunicazione.<br />

Si deve ricordare che CORBA è unicamente un insieme <strong>di</strong> specifiche su come deve<br />

o<strong>per</strong>are e quali funzioni deve fornire un ORB che voglia <strong>di</strong>rsi "CORBA compliant":<br />

non si <strong>di</strong>ce come tali funzionalità debbano essere implementate, ma unicamente<br />

come debbano comportarsi. Nulla <strong>di</strong> implementativo è stato sviluppato da OMG, ma<br />

<strong>di</strong>versi produttori <strong>di</strong> software hanno scelto <strong>di</strong> fornire applicativi conformi a tale<br />

standard; limitandosi, <strong>per</strong>ò, CORBA alle specifiche d'interfaccia, ogni ORB sviluppato<br />

partendo da queste è libero <strong>di</strong> effettuare le scelte implementative volute, ed è quin<strong>di</strong><br />

unico <strong>per</strong> prestazioni, flessibilità, robustezza, scalabilità, etc [Bibl. 12].<br />

2.3.2 Panoramica sull'architettura<br />

Un programmatore che volesse <strong>ad</strong>o<strong>per</strong>are CORBA deve definire l'interfaccia <strong>di</strong> ogni<br />

oggetto facente parte dell'interazione sulla rete usando IDL in modo che non vi siano<br />

ambiguità sulle sue possibilità. La separazione tra definizione ed implementazione<br />

dell'oggetto è il punto <strong>di</strong> forza <strong>di</strong> CORBA, poiché lascia liberi <strong>di</strong> <strong>ad</strong>o<strong>per</strong>are, in fase <strong>di</strong><br />

scrittura dei meto<strong>di</strong>, qualsiasi linguaggio prescelto dal programmatore: uno specifico<br />

compilatore IDL si occupa, infatti, in una fase successiva, <strong>di</strong> mappare la definizione<br />

in due oggetti language-specific separati. Gli oggetti sono detti "stub" e "skeleton". Gli<br />

stub servono da proxy <strong>per</strong> le chiamate da parte <strong>di</strong> client, mentre gli skeleton<br />

implementano i proxy del lato server. Il progettista, una volta ottenuto lo skeleton<br />

della classe, contenente tutte le definizioni dei meto<strong>di</strong> precisate in fase <strong>di</strong> scrittura<br />

IDL, non deve fare altro che estenderlo implementando le chiamate ai meto<strong>di</strong>: stub e

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!