Sei sulla pagina 1di 6

CP pensareprogettareprogrammare n.

136 giugno 2004

Il protocollo FOAM e lApplication Server Anaconda


di Mario Meo-Colombo
` ` Il mercato degli Application Server e in continuo fermento. Analizziamo le peculiarita di un prodotto realizzato in Italia che si caratterizza per lintegrazione con tecnologie di comunicazione ormai consolidate presso il pubblico, quali i fax, gli SMS, il Web.

Mario Meo-Colombo Ingegnere informatico, ` svolge attivita di consulenza ed ha sviluppato una tecnologia per il trasferimento di informazioni ed invocazione di metodi remoti in multi` ` canalita. Attualmente e Direttore Ricerca e Sviluppo presso ErgaIT SRL. ` La sua homepage e consultabile allindirizzo: www.MMC.ErgaIT.com

pubblicato su WWW.INFOMEDIA.IT stampa digitale da Lulu Enterprises Inc. stores.lulu.com/infomedia


Infomedia
` Infomedia e limpresa editoriale che da quasi venti anni ha raccolto la voce dei programmatori, dei sistemisti, dei professionisti, degli studenti, dei ricercatori e dei professori dinformatica italiani. Sono pi` di 800 gli autori che hanno realizzato per le teu state Computer Programming, Dev, Login, Visual Basic Journal e Java Journal, molte migliaia di articoli tecnici, presentazioni di prodotti, tecnologie, protocolli, strumenti di lavoro, tecniche di sviluppo e semplici trucchi e stratagemmi. Oltre 6 milioni di copie distribuite, trentamila pagine stampate, fanno di questa impresa la pi` grande ed u inuente realt` delleditoria specializzata nel campo della a programmazione e della sistemistica. In tutti questi anni le riviste Infomedia hanno vissuto della passione di quanti vedono nella programmazione non solo la propria professione ma unattivit` vitale e un vero a divertimento. ` Nel 2009, Infomedia e cambiata radicalmente adottando ` un nuovo modello aziendale ed editoriale e si e organizzata attorno ad una idea di Impresa Sociale di Comunit` , a partecipata da programmatori e sistemisti, separando le attivit` di gestione dellinformazione gestite da un board a comunitario professionale e quelle di produzione gesti` te da una impresa strumentale. Questo assetto e in linea con le migliori esperienze internazionali e rende Infomedia ancora di pi` parte della Comunit` nazionale degli u a sviluppatori di software. ` Infomedia e media-partner di manifestazioni ed eventi in ambito informatico, collabora con molti dei pi` imporu tanti editori informatici italiani come partner editoriale e fornitore di servizi di localizzazione in italiano di testi in lingua inglese.

Limpaginazione automatica di questa rivista e realizzata al ` 100% con strumenti Open Source usando OpenOffice, Emacs, BHL, LaTeX, Gimp, Inkscape e i linguaggi Lisp, Python e BASH

For copyright information about the contents of Computer Programming, please see the section Copyright at the end of each article if exists, otherwise ask authors. Infomedia contents is 2004 Infomedia and released as Creative Commons 2.5 BY-NC-ND. Turing Club content is 2004 Turing Club released as Creative Commons 2.5 BY-ND. Le informazioni di copyright sul contenuto di Computer Programming sono riportate nella sezione Copyright alla ne di ciascun articolo o vanno richieste direttamente agli autori. Il contenuto Infomedia e 2004 Infome` dia e rilasciato con Licenza Creative Commons 2.5 BYNC-ND. Il contenuto Turing Club e 2004 Turing Club ` e rilasciato con Licenza Creative Commons 2.5 BY-ND. Si applicano tutte le norme di tutela dei marchi e dei segni distintivi. ` E in ogni caso ammessa la riproduzione parziale o totale dei testi e delle immagini per scopo didattico purch e vengano integralmente citati gli autori e la completa identicazione della testata. Manoscritti e foto originali, anche se non pubblicati, non si restituiscono. Contenuto pubblicitario inferiore al 45%. La biograa dellautore riportata nellarticolo e sul sito www.infomedia.it e di norma quella disponibi` le nella stampa dellarticolo o aggiornata a cura dellautore stesso. Per aggiornarla scrivere a info@infomedia.it o farlo in autonomia allindirizzo http://mags.programmers.net/moduli/biograa

FOCUS

Il protocollo FOAM e lApplication Server Anaconda


Il mercato degli Application Server in continuo fermento. Analizziamo le peculiarit di un prodotto realizzato in Italia che si caratterizza per lintegrazione con tecnologie di comunicazione ormai consolidate presso il pubblico, quali i fax, gli SMS, il Web
di Mario Meo-Colombo

copo di questo articolo descrivere le scelte progettuali che hanno portato al rilascio delle specifiche del protocollo FOAM ed alla successiva realizzazione dellApplication Server Anaconda. Il nome del protocollo stato scelto perch la schiuma (foam) pi leggera del sapone (soap). Lobiettivo da raggiungere era quello di integrare tecnologie consolidate e tradizionali (fax, SMS) con quelle proprie del mondo Internet e garantire una continuit di servizio nellutilizzo dei sistemi informativi aziendali.

Il protocollo FOAM
FOAM (Free Object Access Method) un protocollo (un insieme di regole) che descrive come trasferire informazione tra diversi applicativi ed invocare procedure o metodi remoti. Dalla definizione appena esposta, si evince che FOAM risponde a due necessit: trasferire informazione; dare la possibilit ad un applicativo di invocare procedure e/o metodi propri di un altro applicativo, ad esso eventualmente remoto. Ebbene, linformazione gode di una serie di propriet, tra le quali una in particolare in questi anni sta assumendo un ruolo molto importante: la trasferibilit. Nel resto del paragrafo si cercher di classificare il protocollo FOAM in base alle seguenti propriet: supporto fisico (o canale) codifica sincronizzazione

Mario Meo-Colombo

mmcolombo@infomedia.it

Ingegnere informatico, svolge attivit di consulenza ed ha sviluppato una tecnologia per il trasferimento di informazioni ed invocazione di metodi remoti in multicanalit. Attualmente Direttore Ricerca e Sviluppo presso ErgaIT SRL. La sua homepage consultabile allindirizzo: www.MMC.ErgaIT.com

Nei primi calcolatori elettronici, e fino alla fine degli anni 70 del secolo scorso, linformazione veniva trasferita attraverso le schede perforate: cartoncini sui quali venivano prodotti dei fori, posti in corrispondenza con i circuiti elettronici in cui era conservata linformazione. Le schede perforate prodotte da un elaboratore elettronico venivano immesse in un altro elaboratore e linformazione in esse contenuta passava dal primo al secondo elaboratore. Oggi la scienza delle comunicazioni elettriche ha fatto passi da gigante e sono possibili metodi alternativi (e pi evoluti) per il trasferimento delle informazioni, caratterizzati da maggiore efficienza, velocit ed un pi elevato controllo degli errori. A questo punto importante definire il concetto di canale di comunicazione: si intende per canale il supporto fisico attraverso cui linformazione trasferita. Nellesempio precedente, il canale era costituito dal pacco di schede perforate; mentre ai giorni nostri i canali maggiormente utilizzati sono il doppino telefonico (per le comunicazioni tramite modem), il cavo coassiale (reti locali di modesta entit) e quello a fibra ottica, le onde elettromagnetiche, ecc. FOAM consente di trasferire informazione in multicanalit. Questo vuol dire che non si limita ad un solo canale di comunicazione, ma ne supporta diversi, infatti possibile trasferire informazione attraverso la rete Internet (email, ftp, web), mediante le reti di telefonia mobile GSM (messaggi SMS, tecnologia Wap) e fissa (ad esempio con i fax) ed aperto allutilizzo dei nuovi mezzi trasmissivi che il progresso tecnologico fornir nei prossimi anni. anche possibile combinare tutti questi canali. Ad esempio, uninformazione giunta dalla rete Internet, pu essere recapitata tramite fax, oppure la ricezione di un opportuno SMS pu scatenare linvocazione di un metodo remoto. Relativamente alla codifica, FOAM, al pari dei principali protocolli Internet (http, smtp, pop3 solo per citarne alcuni), utilizza uno o pi formati testuali. supportato anche XML, ma ogni programmatore libero di costruire un proprio formato testuale. Lultima propriet da analizzare quella relativa alla sincronizzazione: FOAM un protocollo completamente asincrono (relativamente alle differenze tra sistemi sincroni ed asincroni, si faccia riferimento al Riquadro 1). Si scelto di implementare un proComputer Programming n. 136 - Giugno 2004

28

Application Server

tocollo asincrono per bypassare i problemi tipici dei protocolli sincroni, quali: i sistemi coinvolti devono essere disponibili e funzionanti nel dato istante di tempo in cui lo scambio avviene; durante le operazioni, in genere, i sistemi coinvolti hanno un picco di carico; se la singola azione di una procedura sincrona fallisce, lintera procedura fallisce (anche se sempre possibile prendere accorgimenti affinch ci non accada); la velocit complessiva del sistema pari alla velocit della periferica pi lenta (perch le periferiche veloci devono attendere la risposta di quelle pi lente). In generale si pu dire che una comunicazione asincrona, in cui i messaggi scambiati tra i partner vengono depositati in un gestore di code e definitivamente disaccoppiati dai sistemi che tali messaggi creano ed utilizzano, consente una ottimale integrazione tra sistemi mission critical. I messaggi (propriamente detti Documenti FOAM) costituiscono lelemento atomico dello scambio e possono contenere: dati comandi per lesecuzione di metodi remoti oggetti binari (ad esempio gli Adapter) interessante notare che sono supportate, gi a livello di protocollo, due caratteristiche particolari, note con i nomi di Fault Tolerance e Load Balancing. Si dicono Fault-Tolerant (o tolleranti ai guasti) i sistemi capaci di non subire fallimenti anche quando avvengono guasti hardware o software, mentre per Load Balancing si intende la capacit di un sistema distribuito di bilanciare il carico elaborativo tra i vari agenti computazionali, al fine di migliorare lefficienza complessiva del sistema. Le caratteristiche appena descritte sono state implementare in un modo inconsueto: tradizionalmente pi server collaborano nellerogazione dei servizi. FOAM segue una nuova filosofia, nella quale i server competono su una risorsa virtuale che lerogazione del servizio. Tale approccio (in linea con la filosofia asincrona propria del protocollo) consente: un notevole abbattimento del traffico di rete generato dai partner; il funzionamento dei client anche quando lApplication Server risulta spento (ovviamente in questo caso ai client non verranno erogati i servizi richiesti finch non risale almeno un Application Server); linvocazione multipla di pi metodi remoti, dislocati su macchine diverse.
TABELLA 1
Alcuni metodi forniti dal protocollo FOAM

Si dice che un sistema sincrono se soddisfa le seguenti propriet: esiste un limite superiore al ritardo del messaggio; il tempo necessario al processo per eseguire uno step conosciuto a priori. In un sistema sincrono possibile misurare il timeout dei messaggi, e questo fornisce un meccanismo per determinare i failure. Un sistema invece asincrono se non esiste un limite al ritardo del messaggio, oppure al tempo necessario ad un processo per eseguire uno step. Perci, per dire che un sistema asincrono non deve essere fatta nessuna assunzione sui tempi. Il modello asincrono ha ottenuto molto pi interesse perch ha una semantica relativamente semplice; le applicazioni sviluppate su questo modello sono portabili in modo pi agevole rispetto ad applicazioni che fanno delle assunzioni sui tempi. Nella comunicazione asincrona il canale contiene logicamente un certo numero di buffer dello stesso tipo, in cui vengono ordinati i messaggi, successivamente inviati secondo una certa disciplina: tipicamente si tratta di una coda FIFO. Lesecuzione di una send non provoca lattesa da parte del mittente che il destinatario abbia effettuato la receive corrispondente. Ci permette al modulo mittente di svincolare, entro certi limiti, il proprio funzionamento da quello del destinatario. In alcuni casi ci pu essere importante per evitare situazioni di stallo e per aumentare la velocit di elaborazione. Nella comunicazione sincrona i canali non contengono logicamente alcuno spazio di bufferizzazione. In questo caso i moduli mittente e destinatario stabiliscono una sorta di rendez-vous. I modelli sincroni ed asincroni sono i due estremi di uno spettro di possibili modelli.

RIQUADRO 1 Sistemi sincroni ed asincroni

FOAM mette a disposizione degli sviluppatori una serie di metodi che implementano il trasferimento dellinformazione, alcuni dei quali sono riportati in Tabella 1. Unaltra caratteristica, molto gradita agli sviluppatori, consiste nella possibilit di effettuare laggiornamento del software da remoto. In pratica, quando un team di sviluppo software produce una nuova versione di un programma (ad esempio per eliminare malfunzionamenti, o per introdurre nuove caratteristiche), ha la possibilit di effettuare in maniera automatica lupgrade della base di prodotto installato, senza doversi recare fisicamente presso ogni singolo cliente.

Invocazione di procedure e metodi remoti


Laltra caratteristica di FOAM, oltre al trasferimento dellinformazione, quella di fornire la possibilit ad un

FOAM::SendFile() FOAM::GetFile() FOAM::SendSMS() FOAM::SendFax()

consente di spedire un file ad un elaboratore remoto richiede un file ad un elaboratore remoto spedisce uninformazione testuale attraverso un SMS, ad un telefonino GSM o ad un elaboratore munito di modem-GSM spedisce uninformazione testuale o grafica ad un apparecchio fax (reale o virtuale) remoto o ad un elaboratore munito di modem-fax

Computer Programming n. 136 - Giugno 2004

29

FOCUS

FIGURA 1 Una versione demo di Anaconda Lite. La figura


mostra lApplication Server mentre produce una pagina web con i dati della Borsa Italiana. Gli stessi dati vengono spediti anche in una o pi caselle di posta elettronica

tualmente pre-processandola. Il prodotto RDBMS restituisce i dati allApplication Server, il quale li invia al client che aveva originato la chiamata SQL. La semplicit del protocollo ne consente limplementazione praticamente in tutti i moderni linguaggi. Sono stati scritti client in C++, Pascal, PHP, Tcl/Tk.

Anaconda, lApplication Server basato su FOAM


Un Application Server un applicativo che espone metodi attraverso una o pi interfacce. Anaconda un Application Server completamente scritto in C++ e basato sul protocollo FOAM, di cui sfrutta pienamente le caratteristiche multicanali. In Figura 1 possibile osservare unapplicazione demo in cui Anaconda estrae informazioni relative a quotazioni di titoli di borsa e, da queste, produce pagine Web. anche possibile spedire gli stessi dati per fax, SMS, messaggi e-mail, oppure attivare procedure particolari quando si verificano determinate condizioni (ad esempio se il valore di un titolo esce al di fuori di un range predefinito). LApplication Server si presta ad essere utilizzato in applicazioni a pi livelli, nelle quali Anaconda costituisce lo strato di interfaccia tra le applicazioni che girano sugli host, da quelle che implementano la sola logica di presentazione. Anaconda , quindi, un middleware generico, disponibile in varie implementazioni in funzione dei moduli da cui assemblato (Adapter). Questi possono essere di tre tipi: interni (vengono compilati insieme ad Anaconda); esterni (programmi separati, invocati da Anaconda); add-on (oggetti binari a linkaggio dinamico, script Python, Tcl/Tk, PHP).

applicativo di richiamare funzionalit proprie di un altro applicativo, eventualmente ad esso remoto. Questo apre lo scenario alla cosiddetta elaborazione distribuita. possibile disegnare lapplicazione complessiva in maniera tale che il processo di invocazione remota sia completamente trasparente per lo sviluppatore. Non solo, unapplicazione pu avvalersi di entrambe le caratteristiche: trasferire informazione ed invocare metodi remoti, in multicanalit. La possibilit di invocare metodi remoti, colloca FOAM nella categoria dei prodotti middleware [1]. Tramite FOAM possibile disegnare applicazioni a 2 livelli (corrispondenti al classico modello client/server), ma anche a 3 o pi livelli, consentendo alla logica applicativa di essere completamente svincolata dallo strato di presentazione (linterfaccia utente). Esistono diversi sistemi e tecnologie middleware, ma la peculiarit di FOAM che esso supporta nativamente la multicanalit. FOAM consente di utilizzare una sintassi Object Oriented per meglio integrare i metodi remoti allinterno della gerarchia di classi definite dallutente, tramite i moderni linguaggi di programmazione, che supportano tale paradigma. Esistono tecnologie correlate, come SQL Embedded, attraverso cui possibile accedere in maniera trasparente ad un database remoto. Ad esempio possibile costruire unarchitettura a 3 livelli in cui il livello 1 costituito da un applicativo client che si occupa della logica di presentazione, il livello intermedio da un Application Server (ad esempio Anaconda), ed al terzo livello c un RDBMS. Non questa la sede per motivare la preferenza verso architetture multilivello rispetto a quelle a soli 2 livelli (client/server): gli altri articoli di questo speciale dovrebbero aver chiarito ogni dubbio. Ebbene, possibile interfacciarsi con il RDBMS astraendosi completamente da esso e dalle sottostanti tecnologie di comunicazione, tramite una semplice chiamata del tipo:
FOAM::SQL( select * from table_1 where id > 5 );

Si intende per canale il


supporto fisico attraverso cui linformazione trasferita
Oltre al citato protocollo FOAM, Anaconda offre il supporto anche per CORBA [1,3] e SOAP, caratteristica che lo rende compatibile con le numerose applicazioni aderenti a tali standard. Inoltre, nella configurazione base, Anaconda possiede gli adapter legati alle tecnologie: FOAM::ISU - Intelligent Software Updater, che consente lupgrade del software client, direttamente dallApplication Server, anche mentre il client in esecuzione; FOAM::Push, la tecnologia pushing di FOAM permette ad Anaconda di inviare dati o invocare metodi remoti ad un applicativo client anche in assenza di specifica richiesta da parte di questultimo. Esistono, poi, gli adapter per il supporto alla multicanalit: invio e ricezione e-mail; invio e ricezione Fax (tecnologia Fax@FOAM). I fax inviati possono contenere testo e/o grafica; invio e ricezione SMS (tecnologia FOAM::SMS), eventualmente pi lunghi di 160 caratteri.
Computer Programming n. 136 - Giugno 2004

Questa istruzione genera una chiamata remota verso lApplication Server (che effettivamente interfacciato con il RDBMS), che invia a sua volta la stringa SQL, even30

Application Server

Grazie alla tecnologia FOAM::SQL-Embedded, ed alla compatibilit con gli standard ODBC ed ADO, Anaconda consente laccesso ai principali motori RDBMS (Oracle, SQL Server, Informix, InterBase, MySQL). Gli statement SQL possono essere integrati allinterno dellapplicazione oppure derivanti da query impostate dallutente. Esistono, ad esempio, applicazioni in cui script PHP presenti in pagine Web invocano metodi di Anaconda per valorizzare campi di un database a partire da form html. Ogni applicazione Anaconda pu avere pi di una connessione a database, anche di tipi diversi. Le tecnologie di multicanalit e pushing candidano Anaconda quale partner ideale di qualsiasi applicativo di Data Warehouse: con queste tecnologie, infatti, che un sistema di supporto alle decisioni (DSS) pu aggiornare tempestivamente la dirigenza di unazienda, mediante un qualsiasi sistema integrato di comunicazioni. Anaconda pu essere interfacciato con dispositivi propri dellautomazione industriale, quali PLC e microcontrollori per realizzare applicazioni nel settore della domotica, ad esempio per comandare da Web, o tramite SMS, gli automatismi di una abitazione o di un ufficio (accensione/spegnimento luci, condizionatore, sistemi di irrigazione) o per monitorare valori ambientali (temperatura, umidit, pressione, pH, stato di tapparelle, porte e cancelli elettrici). Tra i punti di forza di Anaconda si possono sicuramente citare la ridotta richiesta di risorse (pu tranquillamente essere installato su un Pentium 2 con Windows 98), la portabilit e la scalabilit, la facilit di installazione anche

quando si desiderano configurazioni Fault Tolerant e la semplicit con cui possibile scrivere adapter per renderlo compatibile con altri ambienti e tecnologie.

Conclusioni
Anaconda non ha n la pretesa, n i mezzi per imporsi come punto di riferimento nel mercato degli Application Server. Lobiettivo che ha portato allo sviluppo del prodotto quello di soddisfare le esigenze informatiche delle Piccole e Medie Imprese (PMI), molto diffuse sul territorio italiano. Le sfide imposte della globalizzazione richiedono che anche realt produttive medio/piccole si dotino di piattaforme di tipo Enterprise. Purtroppo la descrizione di tutte le caratteristiche di un Application Server richiede, probabilmente, una quantit di pagine superiore a quelle dellintera rivista. In ogni caso, il prodotto risulta snello, modulare (configurabile in base alla effettive necessit del cliente) ed economicamente accessibile. Questultima caratteristica non pu che contribuire favorevolmente ad accrescerne lappetibilit proprio da parte di quella tipologia di utenza di cui si parlava poco prima.

BIBLIOGRAFIA & RIFERIMENTI


[1] Mario Meo-Colombo Introduzione a CORBA, Dev n.116 Marzo 2004, Gruppo Editoriale Infomedia [2] http://www.mmc.ergait.com [3] OMGs CORBA Website, http://www.corba.org