L!ve T!tle: software per la consultazione degli andamenti dei titoli di borsa online Reti di Calcolatori LS Nuzzi Nicola Mat 197597 1 Introduzione ► Sviluppo delle tecnologie va di pari passo con lo sviluppo dell’economia. ► Campo borsa. ► Siti applicativo: compravendita di titoli di web già presenti online 2 http:://it.finance.yahoo.com 3 Paradigma Client/Server ► Client utilizza il server che ha a disposizione risorse e metodi condivisi. ► 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. 4 CORBA ► Common Object Request Broker Architecture ► Componenti fondamentali: ORB: object request broker IDL: interface definition language BOA/POA: basic object adapter/portable o.a. SII/DII: static invocation interface/dinamic i.i. IR/OR: interface repository/object r. GIOP/IIOP:general interorb protocol/internet io.p 5 Architettura Corba INTERFACE REPOSITORY COMPILATORE IDL CLIENT DII IDL (stub) IMPLEMENTATION REP. SERVANT (object) ORB INTERFACE IDL (skel) DSI OA GIOP/IIOP ORB CORE 6 Architettura del prototipo ► 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. 7 Stub e Skeleton ► 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 Skeleton si prende la richiesta del client e la si “adatta” al server ► Il superamento dell’eterogeneità è dato da un componente detto Adattatore (OA) 8 CORBA IDL – Stub e Skeleton LATO CLIENT: LINGUAGGI DI PROGRAMMAZIONE (VARI) LATO SERVER: LINGUAGGI DI PROGRAMMAZIONE (VARI) INTERFACCIA IDL STUB SKELETON ORB 9 Digressione: comunicazione ORBORB ► ORB: object request broker. ► Coordinatore delle richieste in maniera trasparente dalla posizione e implementazione dell’oggetto 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 InterOrb Protocol) 10 Realizzazione del prototipo ► Implementazione dell’IDL per gli oggetti e i metodi remoti ► 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 11 Struttura completa del sistema TITLE.IDL Codice sorgente del cliente (Java) Codice stub generato automaticamente Software Client Codice sorgente del server (Java) Librerie CORBA Codice skeleton gen. automaticamente Software Server 12 Naming Service ► 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. ► Operazione di binding: si associa un nome ad un riferimento ► Operazione di naming resolution: risoluzione del nome per recuperare un riferimento al servizio 13 Realizzazione lato server/client ► Ricapitolando: Il server: Inizializza l’orb mediante la init Prima che l’oggetto sia utilizzabile dal client deve essere connesso all’orb mediante la connect (non utilizziamo un oa) 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 Si effettua il binding utilizzando la rebind tra il NameComponent opportuno (nome e tipo) e l’istanza del servant Il client: Effettua le stesse operazioni per ottenere il riferimento al Naming Service Effettua la resolve per ottenere un riferimento all’oggetto remoto (Title nel caso del prototipo) 14 Gestione a polling dell’interrogazione ► L’interrogazione 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 dall’esterno). 15 Sviluppi futuri ► Lo sviluppo del progetto ha permesso di prendere “parziale” confidenza con i meccanismi di elaborazione remota di Corba e con l’indipendenza dal linguaggio mediante IDL. ► Non è proprio uno sviluppo futuro, ma nella realizzazione non prototipale è necessaria una modifica per l’effettiva distributività del software. ► Utilizzo dei meccanismi di Callback per il reperimento dei nuovi valori. 16 Bibliografia ► [1] A. Corradi – Dispense del corso di Reti di Calcolatori LS. Università di Bologna, facoltà di Ingegneria. Anno accademico 2004-2005. ► [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 1998 www.mokabyte.it ► [4] Sun Corp. – Java IDL Examples – java.sun.com/j2se/docs/guide/idl/jidlExample3.html ► [5] K. Johnson – Remoting.Corba Wiki (C#) – kristoperhjohnson.net/cgibin/rc/wiki.pl?Tutorials/Callback ► [6] A. Santoro, A. Termini – Programmazione Corba in Java – www.dis.uniroma.it/~santoroa 17