L!ve T!tle: software per la consultazione degli andamenti dei titoli di borsa online
description
Transcript of L!ve T!tle: software per la consultazione degli andamenti dei titoli di borsa online
11
L!ve T!tle: software L!ve T!tle: software per la consultazione per la consultazione degli andamenti dei degli andamenti dei titoli di borsa onlinetitoli di borsa online
Reti di Calcolatori LSReti di Calcolatori LS
Nuzzi NicolaNuzzi NicolaMat 197597Mat 197597
2
IntroduzioneIntroduzione►Sviluppo delle tecnologie va di pari Sviluppo delle tecnologie va di pari
passo con lo sviluppo dell’economia.passo con lo sviluppo dell’economia.
►Campo applicativo: compravendita di Campo applicativo: compravendita di titoli di borsa.titoli di borsa.
►Siti web già presenti onlineSiti web già presenti online
3
http:://it.finance.yahoo.comhttp:://it.finance.yahoo.com
4
Paradigma Client/ServerParadigma Client/Server►Client utilizza il server che ha a Client utilizza il server che ha a
disposizione risorse e metodi condivisi.disposizione risorse e metodi condivisi.
►Esempio: RMI (limitato a Java).Esempio: RMI (limitato a Java).
►Si pensa a Si pensa a CORBACORBA come metodo per come metodo per progettare oggetti remoti indipendenti progettare oggetti remoti indipendenti dal linguaggio di programmazione e dal linguaggio di programmazione e dalle macchine di esecuzione.dalle macchine di esecuzione.
5
CORBACORBA► Common Object Request Broker ArchitectureCommon Object Request Broker Architecture
► Componenti fondamentali:Componenti fondamentali: ORB: object request brokerORB: object request broker IDL: interface definition languageIDL: 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.pGIOP/IIOP:general interorb protocol/internet io.p
6
Architettura CorbaArchitettura CorbaINTERFACE REPOSITORY COMPILATORE IDL IMPLEMENTATION REP.
CLIENT SERVANT (object)
ORB INTERFACEDII IDL (stub)
IDL(skel) DSI
OA
G I O P / I I O P ORB CORE
7
Architettura del prototipoArchitettura del prototipo►Client/Server su macchina comune Client/Server su macchina comune
(estendibile a macchine separate in (estendibile a macchine separate in una versione finale)una versione finale)
►Costruzione di un Costruzione di un file IDLfile IDL per la per la trasparenza di linguaggio. Nel file sono trasparenza di linguaggio. Nel file sono specificati i metodi e gli oggetti specificati i metodi e gli oggetti remoti.remoti.
8
Stub e SkeletonStub e Skeleton►La compilazione del file IDL permette la La compilazione del file IDL permette la
generazione automatica di generazione automatica di Stub lato Stub lato client e Skeleton lato serverclient e Skeleton lato server
►Tramite lo Stub si lavora sul messaggio Tramite lo Stub si lavora sul messaggio lato client (lo stub agisce come proxy)lato client (lo stub agisce come proxy)
►Tramite lo Skeleton si prende la richiesta Tramite lo Skeleton si prende la richiesta del client e la si “adatta” al serverdel client e la si “adatta” al server
► Il superamento dell’eterogeneità è dato Il superamento dell’eterogeneità è dato da un componente detto da un componente detto AdattatoreAdattatore (OA) (OA)
9
CORBA IDL – Stub e SkeletonCORBA IDL – Stub e Skeleton
LATO CLIENT: LINGUAGGIDI PROGRAMMAZIONE (VARI)
LATO SERVER: LINGUAGGIDI PROGRAMMAZIONE (VARI)
INTERFACCIA IDL
STUB SKELETON
ORB
10
Digressione: comunicazione Digressione: comunicazione ORBORBORBORB
►ORBORB: object request broker.: object request broker.► Coordinatore delle richieste in maniera Coordinatore delle richieste in maniera
trasparente dalla posizione e trasparente dalla posizione e implementazione dell’oggetto remoto.implementazione dell’oggetto remoto.
► La comunicazione da orb a orb di sistemi La comunicazione da orb a orb di sistemi CORBA diversi avviene attraverso protocolli CORBA diversi avviene attraverso protocolli di interoperabilità orb to orb; di interoperabilità orb to orb; standardizzazione con standardizzazione con GIOPGIOP, su TCP/IP molto , su TCP/IP molto usato usato IIOPIIOP (Internet Inter-Orb Protocol) (Internet Inter-Orb Protocol)
11
Realizzazione del prototipoRealizzazione del prototipo► Implementazione dell’IDL per gli Implementazione dell’IDL per gli
oggetti e i metodi remotioggetti e i metodi remoti►Generazione tramite idlj (compilatore Generazione tramite idlj (compilatore
idl di Sun) delle classi Stub e Skeletonidl di Sun) delle classi Stub e Skeleton► Implementazione delle classi Client e Implementazione delle classi Client e
Server (con classi accessorie che ne Server (con classi accessorie che ne conseguono) con conseguente conseguono) con conseguente implementazione “reale” degli oggettiimplementazione “reale” degli oggetti
12
Struttura completa del Struttura completa del sistemasistema
TITLE.IDL
Codice sorgentedel cliente (Java)
Codice stub generatoautomaticamente
SoftwareClient
Software Server
LibrerieCORBA
Codice sorgentedel server (Java)
Codice skeleton gen.automaticamente
13
Naming ServiceNaming Service► Si fa utilizzo di un Si fa utilizzo di un servizio di Namingservizio di Naming con nomi con nomi
unici per rendere disponibile un servant ad un unici per rendere disponibile un servant ad un client remoto.client remoto.
► Parliamo (ed utilizziamo) infatti un servant come Parliamo (ed utilizziamo) infatti un servant come implementatore dei servizi e dei metodi del implementatore dei servizi e dei metodi del server.server.
►Operazione di binding: si associa un nome ad un Operazione di binding: si associa un nome ad un riferimentoriferimento
►Operazione di naming resolution: risoluzione del Operazione di naming resolution: risoluzione del nome per recuperare un riferimento al servizionome per recuperare un riferimento al servizio
14
Realizzazione lato Realizzazione lato server/clientserver/client
► Ricapitolando:Ricapitolando:
Il server:Il server: Inizializza l’orb mediante la initInizializza l’orb mediante la init Prima che l’oggetto sia utilizzabile dal client deve essere connesso all’orb Prima che l’oggetto sia utilizzabile dal client deve essere connesso all’orb
mediante la connect (non utilizziamo un oa)mediante la connect (non utilizziamo un oa) Per ottenere un riferimento agli oggetti disponibili il server utilizza la Per ottenere un riferimento agli oggetti disponibili il server utilizza la
resolve_initial_referencesresolve_initial_references Ottenuto il riferimento viene utilizzata la narrow per recuperare il Ottenuto il riferimento viene utilizzata la narrow per recuperare il
NamingContextNamingContext Si effettua il binding utilizzando la rebind tra il NameComponent opportuno Si effettua il binding utilizzando la rebind tra il NameComponent opportuno
(nome e tipo) e l’istanza del servant(nome e tipo) e l’istanza del servant
Il client:Il client: Effettua le stesse operazioni per ottenere il riferimento al Naming ServiceEffettua le stesse operazioni per ottenere il riferimento al Naming Service Effettua la resolve per ottenere un riferimento all’oggetto remoto (Title nel Effettua la resolve per ottenere un riferimento all’oggetto remoto (Title nel
caso del prototipo)caso del prototipo)
15
Gestione a polling Gestione a polling dell’interrogazionedell’interrogazione
►L’interrogazione per la verifica della L’interrogazione per la verifica della presenza di nuove versioni del presenza di nuove versioni del database dei titoli è realizzata database dei titoli è realizzata mediante polling.mediante polling.
► Il client interroga il server ad intervalli Il client interroga il server ad intervalli ripetuti (con step impostabile ripetuti (con step impostabile dall’esterno).dall’esterno).
16
Sviluppi futuriSviluppi futuri► Lo sviluppo del progetto ha permesso di Lo sviluppo del progetto ha permesso di
prendere “parziale” confidenza con i prendere “parziale” confidenza con i meccanismi di elaborazione remota di Corba e meccanismi di elaborazione remota di Corba e con l’indipendenza dal linguaggio mediante IDL.con l’indipendenza dal linguaggio mediante IDL.
► Non è proprio uno sviluppo futuro, ma nella Non è proprio uno sviluppo futuro, ma nella realizzazione non prototipale è necessaria una realizzazione non prototipale è necessaria una modifica per l’effettiva distributività del modifica per l’effettiva distributività del software.software.
► Utilizzo dei meccanismi di Callback per il Utilizzo dei meccanismi di Callback per il reperimento dei nuovi valori.reperimento dei nuovi valori.
17
BibliografiaBibliografia► [1] A. Corradi – Dispense del corso di Reti di Calcolatori LS. Università [1] A. Corradi – Dispense del corso di Reti di Calcolatori LS. Università
di Bologna, facoltà di Ingegneria. Anno accademico 2004-2005.di Bologna, facoltà di Ingegneria. Anno accademico 2004-2005.
► [2] G. Morello – Java e Corba. Manuale Pratico di Java – dalla teoria [2] G. Morello – Java e Corba. Manuale Pratico di Java – dalla teoria alla programmazione. Volume 2.alla programmazione. Volume 2.
► [3] L. Bettini – Java+IDL=CORBA. Mokabyte n. 22 Settembre 1998 [3] L. Bettini – Java+IDL=CORBA. Mokabyte n. 22 Settembre 1998 www.mokabyte.itwww.mokabyte.it
► [4] Sun Corp. – Java IDL Examples – [4] Sun Corp. – Java IDL Examples – java.sun.com/j2se/docs/guide/idl/jidlExample3.html java.sun.com/j2se/docs/guide/idl/jidlExample3.html
► [5] K. Johnson – Remoting.Corba Wiki (C#) – [5] K. Johnson – Remoting.Corba Wiki (C#) – kristoperhjohnson.net/cgi-bin/rc/wiki.pl?Tutorials/Callbackkristoperhjohnson.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 – www.dis.uniroma.it/~santoroawww.dis.uniroma.it/~santoroa