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