Università degli Studi di Modena e Reggio Emilia Facoltà d’Ingegneria - sede di Modena Corso di Laurea in Ingegneria Informatica Interoperabilità di componenti software fra sistemi operativi eterogenei attraverso il protocollo SOAP. Confronto e sperimentazione Relatore Chiar.mo Prof. Sonia Bergamaschi Correlatore Ing. Maurizio Vincini Tesi di Laurea di Sandro Bernardini Obiettivi • Studio del protocollo SOAP (Simple Object Access Protocol) e del linguaggio WSDL (Web Services Description Language) in riferimento alle specifiche del consorzio W3C (World Wide Web Consortium). • Studio ed utilizzo dei principali toolkit che implementano il protocollo SOAP: – Apache SOAP 2.2. – Microsoft SOAP Toolkit. – Apache Axis. • Integrazione del sistema MOMIS con il protocollo SOAP. Protocollo SOAP • Il protocollo SOAP (Simple Object Access Protocol) nasce nel dicembre 1999, da collaborazioni fra Microsoft, IBM, Sun, ecc. • È diventato un protocollo standard ed attualmente è disponibile la specifica 1.2 rilasciata dal consorzio W3C nel Dicembre 2001. • È un protocollo basato su XML e nasce con lo scopo di migliorare il trasporto dei dati fra sistemi distribuiti eterogenei decentralizzati. • SOAP rappresenta il mezzo per mettere in contatto piattaforme diverse: tralasciando problematiche legate alle comunicazioni fisiche, ai sistemi operativi, ai linguaggi di programmazione ed ai protocolli di comunicazione. Vantaggi e Svantaggi SOAP Vantaggi: • Interoperabilità di applicazioni su piattaforme diverse. • Sfrutta tecnologie Web già consolidate: – XML per esprimere le informazioni – HTTP per trasportare le informazioni • Ma rimane indipendente dal protocollo di trasporto (ad esempio può funzionare via email, HTTPS, FTP, ecc.). • Non ha problemi con i Firewall: – Messaggi testuali semplifica l’analisi ed il monitoraggio del traffico in ingresso. – Utilizzo di porte TCP/IP standard non sono necessarie configurazioni del firewall “rischiose”. Svantaggi: • Prestazioni (la serializzare in XML/deserializzare da XML del payload informativo, per moli elevate di dati, riduce la velocità delle applicazioni). Altre caratteristiche di SOAP • Non specifica nulla sulle applicazioni in uso. • Non gestisce il routing dei messaggi. • Non gestisce l’affidabilità dei dati. Mantenere la max semplicità Per avere la max flessibilità ed espandibilità max Interoperabilità Linguaggio WSDL • Linguaggio basato sulla grammatica XML. • Definisce in modo strutturato e standard le specifiche d’interfaccia di un servizio Web. • Se un servizio remoto fornisce il documento WSDL che lo descrive, allora un client può reperire automaticamente tutte le informazioni sul servizio stesso. si facilita il compito dello sviluppatore. si rende standard la rappresentazione di un servizio. • Attualmente è disponibile la specifica 1.1 rilasciata dal consorzio W3C nel Marzo 2001. Facilita lo sviluppo di nuove applicazioni. Apache SOAP 2.2 • Conforme alla specifica SOAP 1.1 del W3C. • Sul lato client estende Java con alcuni package. • Sul lato server è semplice codice Java + deployment descriptor per la pubblicazione. • Limitazioni: – Non supporta il linguaggio WSDL. – Presenta delle limitazioni rispetto alla specifica 1.1 (Attributo encodingStyle e mustUnderstand hanno valore predefinito, non supporta l’elemento root XML, non supporto l’attributo actor). Microsoft SOAP Toolkit 2.0 • Aggiunge le funzionalità SOAP ai principali linguaggi di programmazione di casa Microsoft (come Visual Basic e VC++). • Conforme alle specifiche SOAP 1.1 del W3C. • Supporta la specifica WSDL 1.1 del W3C. • Per pubblicare i servizi richiede la presenza del web server di casa Microsoft: IIS (Internet Information Server). • Il toolkit permette di eseguire chiamate a servizi o pubblicare questi attraverso due livelli di API (Application Program Interface): – high (sfruttano il supporto WSDL facilitando lo sviluppatore, che può ignorare alcuni meccanismi). – low (forniscono una maggiore flessibilità). Servizio Add Client Web Server: IIS int: 2 int: 4 6 Apache SOAP Visual Basic + Microsoft SOAP Toolkit Apache SOAP per tutti i valori di risposta richiede sempre la loro tipologia. Ad esempio: <return xsi:type="xsd:int">6</return> è la risposta attesa, dove viene specificato esplicitamente che si tratta di un intero. Microsoft SOAP Toolkit non specifica la tipologia dei dati inviati. Ad esempio: <return>6</return> è la risposta inviata. Problema: Apache SOAP e Microsoft SOAP Toolkit di base sono incompatibili. (Apache SOAP rigetta i dati inviati dal server). È stato necessario introdurre un nuovo deserializzatore sul client Apache SOAP, in questo modo, il client accetta la risposta del server VB anche se non è specificato il tipo di dato inviato. Discorso analogo scambiando le architetture fra client ed il server. Apache Axis • Rappresenta l’evoluzione di Apache SOAP 2.2, da cui eredita le caratteristiche di base. • Elimina i difetti del predecessore: È perfettamente compatibile con Microsoft SOAP Toolkit. Supporta le specifiche WSDL 1.1. • Novità: – Supporto parziale delle specifiche SOAP 1.2. – Supporto per la pubblicazione automatica dei servizi (Java Web Service). – Generazione automatica (direttamente da un browser Internet) del documento WSDL per un servizio pubblicato. – Tool WSDL2Java e Java2WSDL. Tool Java2WSDL • Costruisce automaticamente il documento WSDL che descrive il servizio implementato da una classe Java. Client Servizio Add Web Server:Tomcat int: 2 int: 4 int: 6 I due toolkit sono perfettamente compatibili. È possibile utilizzare il supporto WSDL. Apache Axis Java2WSDL Visual Basic + Microsoft SOAP Toolkit WSDL Add Tool WSDL2Java • Costruisce automaticamente tutte le classi/interfacce Java a partire da un documento WSDL, cioè: – Sul lato client, tutti gli oggetti Java necessari per accedere al servizio. – Sul lato server, tutti gli oggetti Java necessari per implementare il servizio. Web Server: Tomcat Client String: USA String: Italy WSDL2Java WSDL float:0.90 Exchange Apache Axis Strumento che facilita il lavoro dello sviluppatore. Apache Axis Il sistema MOMIS • Il sistema MOMIS (Mediator EnvirOnment for Multiple Information Source) nasce dalla collaborazione fra l’Università di Modena e Reggio Emilia e l’Università di Milano e Brescia. • MOMIS è stato progettato per fornire un accesso integrato ad informazioni eterogenee. • Attualmente la gestione dei dati per il sistema MOMIS è affidata all’architettura ad oggetti distribuiti CORBA. • All’interno di CORBA è possibile utilizzare il protocollo IIOP (basato su TCP/IP) per la trasmissione dati, il quale presenta tre notevoli svantaggi: Utilizzabile solo fra nodi con architettura CORBA Limite al concetto d’interoperabilità. È un protocollo binario Problemi nell’attraversare i firewall. Richiede l’utilizzo di porte TCP/IP non standard aumentare i rischi in termini di sicurezza. MOMIS e SOAP • Per superare le difficoltà del protocollo IIOP è nata l’idea d’integrare il sistema MOMIS con il protocollo SOAP. • Nella tesi si è sviluppato un primo servizio MOMIS utilizzabile in remoto attraverso il protocollo SOAP (il quale sfrutta, come protocollo di trasporto, HTTP sulla porta standard 80). • Lato server sviluppato con Apache Axis è stato riutilizzato il modulo SIDesigner per accedere ai dati di MOMIS. • Lato client sviluppato con: – Apache Axis. – Microsoft SOAP Toolkit (Visual Basic/ASP). Servizio MOMIS/SOAP Ambiente Microsoft/Windows 1. L’utente richiede il servizio direttamente da un browser Internet. 2. La relativa applicazione ASP richiama il client VB + MST. 3. Il client invia la richiesta al server tramite un messaggio SOAP. 4. Il server Apache Axis accede tramite CORBA al Global Schema del sistema MOMIS per recuperare le informazioni necessarie. 5. Il server invia la risposta del servizio al client tramite un messaggio SOAP. IIS 6. Il client recupera il valore della risposta e lo invia all’applicazione ASP. VB + MST 7. Il valore della risposta viene visualizzato all’interno del browser Internet. Applicazione ASP Client Funzionamento del servizio: Richiesta Corba Richiesta SOAP Server Apache Axis Risposta SOAP Corba Global Risposta Corba Schema Firewall WSDL Internet ClassiLocali Tomcat Ambiente Unix/Solaris MOMIS e SOAP • Il servizio permette di evidenziare le potenzialità di SOAP: Possibilità di estendere il sistema MOMIS con SOAP, senza la necessità di riprogettare/riorganizzare il sistema già presente semplice processo d’integrazione. Possibilità di aprire l’utilizzo dei servizi MOMIS a diversi linguaggi di programmazione attivi su differenti architetture rendere possibile l’interoperabilità. Possibilità di utilizzare in remoto i servizi SOAP di MOMIS: - senza incontrare difficoltà nell’attraversare i firewall. - sfruttando la porta TCP/IP standard. Conclusioni • Lo sviluppo della tesi si è concentrato sul concetto d’interoperabilità offerto da SOAP verificando questo nell’utilizzo pratico: dagli esempi più semplici fino al caso reale del sistema MOMIS. • Nel fare ciò sono state prese in considerazione, e fatte interagire, due diversi tipi d’implementazione SOAP: – Apache, che essendo basato su Java, si rivolge a diverse architetture. – Microsoft, che si rivolge ai linguaggi di programmazione (di conseguenza alle architetture) di casa Microsoft. • Gli sviluppi futuri di questa tesi riguarderanno l’integrazione di tutti i servizi MOMIS con il protocollo SOAP.