InfoBus
InfoBus è
una tecnologia sviluppata da Sun Microsystems e Lotus che consente lo scambio
dinamico di dati tra componenti Java. Essa si basa su un insieme compatto
di API, incluso nel JDK 1.2, che mette a disposizione gli eventi, le classi
e le interfacce per la comunicazione tra JavaBeans, applet e servlet.
La possibilità
di avere un’infrastruttura standard tramite la quale scambiarsi i dati
rende la riusabilità dei componenti stessi una realtà, orientando
lo sviluppo di applicazioni Java sempre più verso l’interconnessione
di componenti. La metafora adottata da InfoBus è appunto quella
del bus dati: i componenti si collegano al bus sul quale vengono immessi
e prelevati i dati (Figura 1).
I tipi di dati che
è possibile scambiare tramite InfoBus vanno dalle semplici stringhe
e valori numerici a dati più complessi come liste, array e tabelle.
Un’applicazione
Java che utilizza InfoBus ha un’architettura costituita da un insieme di
componenti che comunicano tra di loro tramite un’infrastruttura analoga
idealmente al bus dati hardware. Diversamente dal modello ad eventi in
cui l’interazione dipende dalla comprensione di eventi specifici dei vari
componenti, InfoBus mette a disposizione pochi ma essenziali meccanismi
standard comprensibili da tutti i componenti che supportano questa tecnologia.
I componenti
che costituiscono un’applicazione basata su InfoBus possono essere classificati
in tre categorie:
-
data producer: sono
i componenti che forniscono i dati richiesti dai data consumer; in genere
questi componenti prelevano i dati da un database, da un foglio di calcolo
o da una qualsiasi altra fonte di dati e li rendono disponibili sull’InfoBus;
-
data consumer: sono
i componenti che richiedono informazioni; questi componenti recuperano
i dati dal bus per poterli elaborare o visualizzare;
-
data controller:
sono componenti speciali che regolano o redirigono il flusso di dati tra
data producer e data consumer.
Un componente può
essere al tempo stesso data producer e data consumer. Questa separazione
di ruoli tra produttori e consumatori di dati consente alle applicazioni
di essere indipendenti dai dati stessi. Ad esempio, un applet o un JavaBean
per la visualizzazione di un grafico non ha bisogno di utilizzare SQL o
JDBC per accedere ai dati di un DBMS; esso richiede i dati di cui ha bisogno
e sarà un componente specializzato a fornirglieli tramite l’InfoBus.
I dati "viaggiano" sull’InfoBus in oggetti a cui viene associato un nome
e che vengono classificati come data items. L’interazione tra i componenti
per mezzo di InfoBus avviene tramite quattro attività:
-
registrazione (membership):
con questa attività un qualsiasi componente Java si connette all’InfoBus
ottenendo un identificatore univoco che lo qualifica come membro dell’InfoBus;
-
attesa degli eventi:
i membri ricevono dal bus notifiche diverse in base al proprio ruolo: i
data producer riceveranno richieste di dati mentre i data consumer riceveranno
notifiche di disponibilità dei dati richiesti;
-
rendez-vous per
lo scambio di dati: i data producers comunicano la disponibilità
dei dati richiesti mentre i data consumer richiedono i dati di cui hanno
bisogno;
-
recupero dei dati:
i vari data producer gestiscono diversi tipi di dati mentre un determinato
data consumer può avere necessità di acquisire i dati secondo
le proprie necessità; InfoBus definisce una serie di interfacce
per l’accesso sia a dati semplici, come ad esempio stringhe e valori numerici,
che a dati strutturati secondo varie tipologie (array, liste, tabelle,
ecc.); in ogni caso il meccanismo di riferimento ai dati avviene per nome.
La tecnologia InfoBus
è simile al Dynamic Data Exchange (DDE) di Microsoft, ma con alcune
rilevanti differenze. In primo luogo il meccanismo di scambio di dati tra
i componenti avviene tramite una infrastruttura neutrale (InfoBus) e non
tramite uno scambio di eventi e risposte (callback) specifici delle applicazioni
cooperanti, come avviene per il DDE. Questo aspetto insieme al fatto che
i riferimenti ai dati che "viaggiano" sul bus vengono fatti per nome, rende
l’interazione tra i componenti Java veramente indipendente. Infatti un
data consumer non ha bisogno di conoscere chi è il data producer
che gli fornirà i dati; esso rimarrà in attesa che sull’InfoBus
arrivi un dato che ha un determinato nome, ad esempio QueryResult, senza
preoccuparsi di stabilire un collegamento diretto con il componente che
ha immesso il dato sul bus. Il vantaggio per gli sviluppatori Java è
evidente; non sarà più necessario definire un protocollo
specifico per lo scambio di dati tra i componenti di un’applicazione, con
tutte le conseguenze che questo comporta (codice aggiuntivo, performance,
compatibilità con altri componenti), ma sarà sufficiente
che i componenti utilizzino la tecnologia InfoBus. Attualmente InfoBus
consente la comunicazione tra oggetti presenti sulla stessa macchina virtuale
(JVM). Essa non consente lo scambio di dati tra componenti che si trovano
su macchine virtuali diverse, ad esempio tra un JavaBean che gira su un
server e uno che gira su un client. Al momento è allo stadio di
prototipo una versione distribuita di InfoBus (Distributed InfoBus): questa
tecnologia aggiunge un proxy di rete all’InfoBus locale che rileva eventi
e dati sulla rete.
La comunicazione
tra i membri dell’InfoBus realizzati su macchine virtuali diverse viene
effettuata tramite protocolli di rete come HTTP e IIOP. Per approfondimenti
su questa tecnologia, il sito ufficiale è quello della Sun Microsystem.
All’indirizzo
http://java.sun.com/beans/infobus/spec
è infatti possibile trovare le specifiche ufficiali di InfoBus.
A partire dall’indirizzo http://www.javasoft.com/beans/infobus,
inoltre, è possibile accedere ad una serie di link a documenti che
offrono una panoramica sulla tecnologia e sulle applicazioni che al momento
l’hanno adottata e da cui è possibile scaricare i nuovi JDK e BDK
aggiornati per il supporto di InfoBus. Una faq introduttiva sull’argomento
si trova all’indirizzo http://www.javasoft.com/beans/faq/faq.InfoBus.html;
questo documento fornisce anche alcune delucidazioni sulle relazioni tra
InfoBus, IIOP e RMI. Inoltre, a partire dall’indirizzo http://esuite.lotus.com
è possibile trovare alcuni tutorial su questa tecnologia, oltre
a informazioni e documentazione su Lotus eSuite DevPack, una serie di componenti
e tool compatibili con InfoBus. |