Web Services e Axis2 Axis2 (Overview)
Transcript
Web Services e Axis2 Axis2 (Overview)
Web Services e Axis2 (Overview) Ingegneria del software (II parte) Andrea Bei Web Services definizione E’ uno standard tecnologico nato per supportare l'interoperabilità (i.e. comunicazione) tra sistemi eterogenei (scritti in linguaggi diversi, su sistemi operativi diversi,…) Un Web Service è un servizio che offre un'interfaccia software descritta in un formato standard (WSDL) e automaticamente elaborabile. Utilizzando l’interfaccia altri sistemi possono interagire con il Web Service attivando le operazioni descritte nell'interfaccia tramite appositi "messaggi" I messaggi sono, solitamente, trasportati tramite il protocollo HTTP e formattati secondo lo standard XML. Caratteristiche Sono servizi incapsulati e modulari accessibili via HTTP (ed altri protocolli) tramite l’interfaccia pubblicata. Es: quotazione attuale o andamento di un titolo di borsa verifiche su una carta di credito e processo di pagamento previsioni del tempo ….. Possono essere composti per fornire un unico servizio Possono essere pubblicati in un registro (UDDI) per essere ricercabili e quindi utilizzabili Permettono l’integrazione dinamica tra sistemi informatici eterogenei Pro e Contro PRO Permettono l'interoperabilità tra diverse applicazioni software su diverse piattaforme hardware Utilizzano standard e protocolli "open" Mediante l'uso di HTTP per il trasporto dei messaggi i Web Service non necessitano, normalmente, che vengano effettuate modifiche alle regole di sicurezza utilizzate come filtro sui firewall Possono essere facilmente utilizzati per formare servizi "integrati" e complessi. Consentono il riutilizzo di infrastrutture ed applicazioni già sviluppate e sono (relativamente) indipendenti da eventuali modifiche delle stesse CONTRO Attualmente non esistono standard consolidati per applicazioni critiche quali, ad esempio, le transazioni distribuite Le performance legate all'utilizzo dei Web Service possono essere minori di quelle riscontrabili utilizzando approcci alternativi di distributed computing quali Java RMI, CORBA, o DCOM Stack protocollare Trasporto del servizio: responsabile per il trasporto dei messaggi tra le applicazioni in rete, include protocolli quali HTTP, SMTP, FTP, XMPP ed il recente Blocks Extensible Exchange Protocol (BEEP) XML Messaging: tutti i dati scambiati sono in linguaggio XML. Il messaggio può essere codificato conformemente allo standard SOAP, come anche utilizzare JAX-RPC, XML-RPC o REST Descrizione del servizio: l'interfaccia pubblica di un Web Service viene descritta tramite WSDL (Web Services Description Language) un linguaggio basato su XML usato per la creazione di "documenti" descrittivi delle modalità di interfacciamento ed utilizzo del Web Service. Elencazione dei servizi: la centralizzazione della descrizione e della localizzazione dei Web Service in un "registro" comune permette la ricerca ed il reperimento in maniera veloce dei Web Service disponibili in rete; a tale scopo viene attualmente utilizzato il protocollo UDDI Caratteristiche sono la tecnologia fondamentale per l’integrazione tra sistemi (EAI) Caratteristiche … la cooperazione applicativa (porta di dominio) Sistema informativo pa1 dominio 1 pa 2 dominio 2 Caratteristiche e le architetture SOA Il modello dei Web Services Il modello dei Web Services SOAP Il modello dei Web Services Representational state transfer (REST) REST è l’acronimo di Representational Transfer State, ed è un paradigma per la realizzazione di applicazioni Web che permette la manipolazione delle risorse per mezzo dei metodi GET, POST, PUT e DELETE del protocollo HTTP. I termini "representational state transfer" e "REST" furono introdotti nel 2000 nella tesi di dottorato di Roy Fielding, uno dei principali autori delle specifiche dell' Hypertext Transfer Protocol (HTTP) Un Web service REST offre le proprie funzionalità come un insieme di risorse indirizzabili tramite URI (risorse web) usando la sintassi e la semantica del protocollo HTTP (GET, POST, PUT, e DELETE) Il termine è spesso usato per descrivere ogni semplice interfaccia che trasmette dati su HTTP senza un livello opzionale come SOAP o la gestione della sessione tramite i cookies Analogia con le operazioni CRUD (CREATE, READ, UPDATE, DELETE) > (POST,GET,PUT,DELETE) Representational state transfer (REST) http://www.boeing.com/aircraft/747 Viene restituita una rappresentazione della risorsa (es: Boeing747.html). Il client assume uno stato Se il client segue un link di Boeing747.html viene restituita un altra rappresentazione portando il client in un nuovo stato L’applicazione client cambia (transfer) stato per ogni rappresentazione delle risorse (Representational state transfer) Representational state transfer (REST) Esempio: Part Depot (Deposito di pezzi di ricambio) 1. get a list of parts 2. get detailed information about a particular part 3. submit a Purchase Order (PO) get a list of parts http://www.parts-depot.com/parts <?xml version="1.0"?> <p:Parts xmlns:p="http://www.parts-depot.com" xmlns:xlink="http://www.w3.org/1999/xlink"> <Part id="00345" xlink:href="http://www.parts-depot.com/parts/00345"/> <Part id="00346" xlink:href="http://www.parts-depot.com/parts/00346"/> <Part id="00347" xlink:href="http://www.parts-depot.com/parts/00347"/> <Part id="00348" xlink:href="http://www.parts-depot.com/parts/00348"/> </p:Parts> Building Web Services the REST Way (http://www.xfront.com/REST-Web-Services.html) Il client passa da uno stato all’altro esaminando il risultato e scegliendo uno delle possibili URL nella risposta Representational state transfer (REST) get part detail http://www.parts-depot.com/parts/00345 <?xml version="1.0"?> <p:Part xmlns:p="http://www.parts-depot.com" xmlns:xlink="http://www.w3.org/1999/xlink"> <Part-ID>00345</Part-ID> <Name>Widget-A</Name> <Description>This part is used within the frap assembly</Description> <Specification xlink:href="http://www.parts-depot.com/parts/00345/specification"/> <UnitCost currency="USD">0.10</UnitCost> <Quantity>10</Quantity> </p:Part> Representational state transfer (REST) Il client crea il documento PO.xml conforme allo schema che Parts Depot ha pubblicato nel file WSDL PO Il client invia PO.xml con una HTTP POST XML con esito dell’ordine Axis 2 Axis2 è un framework open source sviluppato dall'Apache Software Foundation, che fornisce uno strumento mediante il quale è possibile pubblicare o interrogare un Web service. E’ nato con l’obiettivo di estendere la piattaforma Axis con nuovi protocolli come: WS-Security, WS-Addressing, WSReliableMessaging. Supporta implementazioni Java e C lato client e lato server dei Web Service Le principali caratteristiche sono: Axis 2 Le principali caratteristiche sono: Inviare, ricevere ed elaborare messaggi SOAP Creare web service da una semplice classe Java Creare classi sia per il Server che per il Client utilizzando WSDL Recuperare facilmente il WSDL di un servizio; Inviare e ricevere messaggi SOAP con allegati; Creare o utilizzare un servizio Web basato sul nuovo paradigma REST Axis 2: approccio per la generazione automatica di ws 1. 2. 1. 2. 3. TopTop-down creazione del file WSDL che descrive il Web Service generazione automatica di skeleton Java e file per il deployment del Web Service a partire dal file WSDL BottomBottom-up creazione di una classe o interfaccia Java che contiene i metodi che il Web Service dovrà esporre generazione automatica del WSDL a partire dalla classe generazione automatica di skeleton Java e file per il deployment del Web Service a partire dal file WSDL Axis 2: esempio A partire dalla classe Java “Traces” contenente il metodo public boolean addTrace(String d,String c,String lat,String lon,String date); addTrace( lat lon axis2 può generare automaticamente il web service Classe Metodo http://<indirizzo IP Server>/axis2/services/Traces/addTrace?d=<IMEI device>&c=<Team State >&lat=<latitudine>&lon=<longitudine>&date=<data e ora> Tratto da Tesi di Andrea Frusone Axis 2 Plugin dedicati ai Web Service per i Eclipse e Netbeans: – Eclipse Web Tools Platform (WTP) – Netbeans Enterprise Pack Semplificano l'approccio top-down 1. Permettono di definire il Web Service mediante interfaccia grafica generando il documento WSDL corrispondente 2. Axis 2 Scaricare http://ws.apache.org/axis2/ Effettuare il deploy in un servlet container (es: TomCat) Usare l’interfaccia web di amministrazione Installare il plugin Axis2 in Eclipse Seguire il tutorial http://www.eclipse.org/webtools/community/tutorials/BottomUpAxis2 WebService/bu_tutorial.html Seguire il tutorial http://ws.apache.org/axis2/1_1/rest-ws.html Axis 2 Axis2 Apache Software Foundation, Axis2 Documentation, Documentation http://ws.apache.org/axis2/1_4_1/contents.html Axis2 con Eclipse Web Tools Platform Eclipse Foundation, Web Service Tutorials for WTP 1.5, 1.5 http://www.eclipse.org/webtools/jst/components/ws/1.5/tutorials/index.html Ka Iok Kent Tong, Developing Web Services with Apache Axis2, Axis2 TipTec Development, 2005-2008 Comunicazione per applicazioni Mobile LocalDB GPRS/UMTS REST Internet Web Service Web Service Web Service Web Application Service DAO Application Server DBMS