1 L!ve T!tle: software per la consultazione degli andamenti dei titoli di borsa online Reti di Calcolatori LS Nuzzi Nicola Mat
2 Introduzione Sviluppo delle tecnologie va di pari passo con lo sviluppo delleconomia. Sviluppo delle tecnologie va di pari passo con lo sviluppo delleconomia. Campo applicativo: compravendita di titoli di borsa. Campo applicativo: compravendita di titoli di borsa. Siti web già presenti online Siti web già presenti online
3
4 Paradigma Client/Server Client utilizza il server che ha a disposizione risorse e metodi condivisi. Client utilizza il server che ha a disposizione risorse e metodi condivisi. Esempio: RMI (limitato a Java). Esempio: RMI (limitato a Java). Si pensa a CORBA come metodo per progettare oggetti remoti indipendenti dal linguaggio di programmazione e dalle macchine di esecuzione. Si pensa a CORBA come metodo per progettare oggetti remoti indipendenti dal linguaggio di programmazione e dalle macchine di esecuzione.
5 CORBA Common Object Request Broker Architecture Common Object Request Broker Architecture Componenti fondamentali: Componenti fondamentali: ORB: object request broker ORB: object request broker IDL: interface definition language IDL: interface definition language BOA/POA: basic object adapter/portable o.a. BOA/POA: basic object adapter/portable o.a. SII/DII: static invocation interface/dinamic i.i. SII/DII: static invocation interface/dinamic i.i. IR/OR: interface repository/object r. IR/OR: interface repository/object r. GIOP/IIOP:general interorb protocol/internet io.p GIOP/IIOP:general interorb protocol/internet io.p
6 Architettura Corba INTERFACE REPOSITORYCOMPILATORE IDLIMPLEMENTATION REP. CLIENTSERVANT (object) ORB INTERFACE DII IDL (stub) IDL (skel) DSI OA G I O P / I I O PORB CORE
7 Architettura del prototipo Client/Server su macchina comune (estendibile a macchine separate in una versione finale) Client/Server su macchina comune (estendibile a macchine separate in una versione finale) Costruzione di un file IDL per la trasparenza di linguaggio. Nel file sono specificati i metodi e gli oggetti remoti. Costruzione di un file IDL per la trasparenza di linguaggio. Nel file sono specificati i metodi e gli oggetti remoti.
8 Stub e Skeleton La compilazione del file IDL permette la generazione automatica di Stub lato client e Skeleton lato server La compilazione del file IDL permette la generazione automatica di Stub lato client e Skeleton lato server Tramite lo Stub si lavora sul messaggio lato client (lo stub agisce come proxy) Tramite lo Stub si lavora sul messaggio lato client (lo stub agisce come proxy) Tramite lo Skeleton si prende la richiesta del client e la si adatta al server Tramite lo Skeleton si prende la richiesta del client e la si adatta al server Il superamento delleterogeneità è dato da un componente detto Adattatore (OA) Il superamento delleterogeneità è dato da un componente detto Adattatore (OA)
9 CORBA IDL – Stub e Skeleton LATO CLIENT: LINGUAGGI DI PROGRAMMAZIONE (VARI) LATO SERVER: LINGUAGGI DI PROGRAMMAZIONE (VARI) INTERFACCIA IDL STUBSKELETON ORB
10 Digressione: comunicazione ORB ORB ORB: object request broker. ORB: object request broker. Coordinatore delle richieste in maniera trasparente dalla posizione e implementazione delloggetto remoto. Coordinatore delle richieste in maniera trasparente dalla posizione e implementazione delloggetto remoto. La comunicazione da orb a orb di sistemi CORBA diversi avviene attraverso protocolli di interoperabilità orb to orb; standardizzazione con GIOP, su TCP/IP molto usato IIOP (Internet Inter- Orb Protocol) La comunicazione da orb a orb di sistemi CORBA diversi avviene attraverso protocolli di interoperabilità orb to orb; standardizzazione con GIOP, su TCP/IP molto usato IIOP (Internet Inter- Orb Protocol)
11 Realizzazione del prototipo Implementazione dellIDL per gli oggetti e i metodi remoti Implementazione dellIDL per gli oggetti e i metodi remoti Generazione tramite idlj (compilatore idl di Sun) delle classi Stub e Skeleton Generazione tramite idlj (compilatore idl di Sun) delle classi Stub e Skeleton Implementazione delle classi Client e Server (con classi accessorie che ne conseguono) con conseguente implementazione reale degli oggetti Implementazione delle classi Client e Server (con classi accessorie che ne conseguono) con conseguente implementazione reale degli oggetti
12 Struttura completa del sistema TITLE.IDL Codice sorgente del cliente (Java) Codice stub generato automaticamente Software Client Software Server Librerie CORBA Codice sorgente del server (Java) Codice skeleton gen. automaticamente
13 Naming Service Si fa utilizzo di un servizio di Naming con nomi unici per rendere disponibile un servant ad un client remoto. Si fa utilizzo di un servizio di Naming con nomi unici per rendere disponibile un servant ad un client remoto. Parliamo (ed utilizziamo) infatti un servant come implementatore dei servizi e dei metodi del server. Parliamo (ed utilizziamo) infatti un servant come implementatore dei servizi e dei metodi del server. Operazione di binding: si associa un nome ad un riferimento Operazione di binding: si associa un nome ad un riferimento Operazione di naming resolution: risoluzione del nome per recuperare un riferimento al servizio Operazione di naming resolution: risoluzione del nome per recuperare un riferimento al servizio
14 Realizzazione lato server/client Ricapitolando: Ricapitolando: Il server: Il server: Inizializza lorb mediante la init Inizializza lorb mediante la init Prima che loggetto sia utilizzabile dal client deve essere connesso allorb mediante la connect (non utilizziamo un oa) Prima che loggetto sia utilizzabile dal client deve essere connesso allorb mediante la connect (non utilizziamo un oa) Per ottenere un riferimento agli oggetti disponibili il server utilizza la resolve_initial_references Per ottenere un riferimento agli oggetti disponibili il server utilizza la resolve_initial_references Ottenuto il riferimento viene utilizzata la narrow per recuperare il NamingContext Ottenuto il riferimento viene utilizzata la narrow per recuperare il NamingContext Si effettua il binding utilizzando la rebind tra il NameComponent opportuno (nome e tipo) e listanza del servant Si effettua il binding utilizzando la rebind tra il NameComponent opportuno (nome e tipo) e listanza del servant Il client: Il client: Effettua le stesse operazioni per ottenere il riferimento al Naming Service Effettua le stesse operazioni per ottenere il riferimento al Naming Service Effettua la resolve per ottenere un riferimento alloggetto remoto (Title nel caso del prototipo) Effettua la resolve per ottenere un riferimento alloggetto remoto (Title nel caso del prototipo)
15 Gestione a polling dellinterrogazione Linterrogazione per la verifica della presenza di nuove versioni del database dei titoli è realizzata mediante polling. Linterrogazione per la verifica della presenza di nuove versioni del database dei titoli è realizzata mediante polling. Il client interroga il server ad intervalli ripetuti (con step impostabile dallesterno). Il client interroga il server ad intervalli ripetuti (con step impostabile dallesterno).
16 Sviluppi futuri Lo sviluppo del progetto ha permesso di prendere parziale confidenza con i meccanismi di elaborazione remota di Corba e con lindipendenza dal linguaggio mediante IDL. Lo sviluppo del progetto ha permesso di prendere parziale confidenza con i meccanismi di elaborazione remota di Corba e con lindipendenza dal linguaggio mediante IDL. Non è proprio uno sviluppo futuro, ma nella realizzazione non prototipale è necessaria una modifica per leffettiva distributività del software. Non è proprio uno sviluppo futuro, ma nella realizzazione non prototipale è necessaria una modifica per leffettiva distributività del software. Utilizzo dei meccanismi di Callback per il reperimento dei nuovi valori. Utilizzo dei meccanismi di Callback per il reperimento dei nuovi valori.
17 Bibliografia [1] A. Corradi – Dispense del corso di Reti di Calcolatori LS. Università di Bologna, facoltà di Ingegneria. Anno accademico [1] A. Corradi – Dispense del corso di Reti di Calcolatori LS. Università di Bologna, facoltà di Ingegneria. Anno accademico [2] G. Morello – Java e Corba. Manuale Pratico di Java – dalla teoria alla programmazione. Volume 2. [2] G. Morello – Java e Corba. Manuale Pratico di Java – dalla teoria alla programmazione. Volume 2. [3] L. Bettini – Java+IDL=CORBA. Mokabyte n. 22 Settembre [3] L. Bettini – Java+IDL=CORBA. Mokabyte n. 22 Settembre [4] Sun Corp. – Java IDL Examples – java.sun.com/j2se/docs/guide/idl/jidlExample3.html [4] Sun Corp. – Java IDL Examples – java.sun.com/j2se/docs/guide/idl/jidlExample3.html [5] K. Johnson – Remoting.Corba Wiki (C#) – kristoperhjohnson.net/cgi- bin/rc/wiki.pl?Tutorials/Callback [5] K. Johnson – Remoting.Corba Wiki (C#) – kristoperhjohnson.net/cgi- bin/rc/wiki.pl?Tutorials/Callback [6] A. Santoro, A. Termini – Programmazione Corba in Java – [6] A. Santoro, A. Termini – Programmazione Corba in Java –