MokaByte Numero 30  - Maggio 1999
 
InfoBus
di
Andrea Chiarelli
Un nuovo standard per lo scambio  di dati in Java
In collaborazione con Computer Programming


L’interazione tra i componenti di un’applicazione pone spesso un serio ostacolo alla    riusabilità dei componenti stessi. Sun e Lotus propongono una soluzione a questo problema per le applicazioni Java
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. 

  
 

MokaByte rivista web su Java

MokaByte ricerca nuovi collaboratori
Chi volesse mettersi in contatto con noi può farlo scrivendo a mokainfo@mokabyte.it