Servizi Web
Nel apitolopre edente èstato illustrato omesiapossibile reare interfa e
web attraverso le JSP. CONStanza è un servizio di onsistenza a essibi-
le ome servizio web. In questo apitolo saranno mostrate le aratteristi-
he propriedei web servi es, soermando iin parti olaresulle proprietà he
permettono l'interoperabilità,queste aratteristi he infattisono state utiliz-
zate nello sviluppo dell'interfa ia web, in parti olare nella realizzazione di
JavaBeans ingrado di invo are i servizi remotidi CONStanza.
6.1 Caratteristi he dei servizi web
Unserviziowebèun'appli azionebasatasuproto olliestandardgiàesistenti,
legati adInternet, ome HTTP, XML, SOAP, WSDL e UDDI.
Può essere denito ome un'interfa ia posizionata tra il odi e dell'ap-
pli azione he oreil servizio el'appli azione liente (gura6.1).
Figura 6.1: Livello diastrazione introdotto daiservizi web [20℄
Attraverso questa interfa ia (des ritta utilizzando il linguaggio WSDL)
i lienti possonointeragire on ilservizio web stesso,attivando leoperazioni
des rittenell'interfa iamediantemessaggiXML.Ilproto olloutilizzatoper
lo s ambio di tali messaggi è SOAP e la omuni azione sulla rete avviene
nella maggiorparte dei asi utilizzando HTTP.
Un servizio Web quindi agis e introdu endo un'astrazione he separa la
piattaformasu ui si basa l'appli azione ed i dettagli del linguaggiodi pro-
grammazioneutilizzato,dalmodoin uil'appli azionevieneinvo ata. Infatti
propriograzieall'astrazioneintrodotta,sipuòadesempioa edereadunser-
vizio web sviluppato in C++, attraverso un lient Java, ( ome mostreremo
su essivamente, illustrandolosviluppodell'interfa iawebperCONStanza)
ovi eversa, oppureèpossibilea edere adunservizio web he sitrovasuun
sistemaUnix utilizzando una ma hina on sistemaoperativo Windows.
L'interoperabilità è quindi uno dei maggiori bene i portati dall'imple-
mentazione dei servizi web, permettendo una fa ile integrazione tra l'ap-
pli azione he svolge il servizio web e l'appli ativo liente he ne permette
l'utilizzo.
6.2 Ar hitettura dei servizi web
In gura6.2 viene mostratal'ar hitettura deiservizi Web.
Figura6.2: Ar hitettura servizi web [20℄
Il servi e provider pubbli auna des rizione delserviziooerto attraverso
ilservi e registry. Il servi e onsumer utilizzandoil servi e registry er aun
servizio he soddisisuoi bisogni. Unavoltatrovatoutilizzeràlades rizione
6.2.1 Operazioni
Per utilizzare un servizio web servono le seguenti operazioni ome mostrato
ingura 6.2:
• Publish: Con questa operazione viene pubbli ata una des rizione del servizioweb, inmodo he possa esserere uperatada hihabisognodi
utilizzareilservizio.
• Find: Èl'operazione on uisi er ailserviziodi uisihabisogno,lari- er apuòavvenireinterrogandoiregistrideiservizi,oppureri er ando
lades rizione direttamentedalservi e provider.
• Bind: Attraverso questa operazione il servi e onsumer ri hiama oav-
via un'interazione on il servizio, utilizzando le regole presenti nella
des rizione delservizio.
6.2.2 Ruoli nell'ar hitettura dei servizi web
• Servi e provider: È la piattaforma he realizza ed ospita il servizio, tramitel'operazione dipublishilservizio viene pubbli izzato,inquan-
to le sue aratteristi he vengono memorizzate nel servi e registry, un
registroa essibilepubbli amente. Ilservi e providerquindi rimanein
attesa diun liente he ri hieda il servizio oerto.
• Servi e onsumer: È l'appli azione he tramite l'operazione di nd interagis e on il servi e registry per ottenere il servizio più adatto
aipropri obiettivi. Unavoltaindividuatosi ollega alservi e provider
orrispondente (bind) e inizia a fruire delparti olare servizio. Questo
ruolo può essere svolto da un browser gestito da una persona, oppure
daun appli ativosenza user interfa e, ome un altro servizio web.
• Servi e registry o broker: È il registro su ui i servi e provider pub-
bli ano le des rizioni dei servizi oerti, e su ui i servi e onsumer
eettuano leri er he, inmododatrovareiservizi di uihannobisogno
e leinformazioniper ollegarsialservizio web.
6.3 Lo sta k dei servizi web
L'ar hitetturadeiserviziwebèimplementatautilizzandounos hemaalivelli,
in ui i livelli superiori sono ostruiti sulle funzionalità fornite dai livelli
Figura6.3: Sta k deiservizi web [20℄
6.3.1 Livello dis overy
Illivellodis overyfornis eilme anismo hepermetteal lientediottenerela
des rizionedeiservizioertidaiproviders. Ilme anismomaggiormenteuti-
lizzatoè l'Universal Des ription, Dis overy and Integration (UDDI),
attraverso il quale vengono indi izzati i servizi web, denendo un registro
su ui poter eettuare delle ri er he, in ui sono presenti i servizi e le loro
des rizioni, in modo da permettere all'utente di s oprire i servizi di ui ha
bisogno.
6.3.2 Livello des ription
Quando un servizio web è implementato, deve denire quali proto ollisup-
porta per i livelli network, transport e pa kaging. Queste aratteristi he
devono essere des ritte emesse adisposizionedel liente, inmodo he possa
ontattareed utilizzare ilservizio.
Lostandardutilizzatopereettuarequestades rizioneèilWebServi e
Des ription Language (WSDL).
6.3.3 Livello pa kaging
L'insieme di dati delle appli azioni he viaggiano in rete sul livello di tra-
sporto, devono essere impa hettati in un formato tale da essere apiti da
tutti equindi permettere una omuni azionetra i lientie i servizi web.
La base dei formati di pa kaging è il linguaggio XML. Il proto ollo,
6.3.4 Livello transport
Il livello transport ha il ompitodi trasportare l'insieme dei dati attraverso
larete, in ludeproto olli ome TCP, HTTP,FTP, e ..
6.3.5 Livello network
illivellonetwork presente nellosta k deiservizi web oin ide on l'omonimo
livello del modello TCP/IP, quindi fornis e le basi per la omuni azione,
l'indirizzamentoe lefunzionalitàdi routing.
6.3.6 Standard e Proto olli utilizzati dai servizi web
Ognilivellopersvolgerelepropriefunzionalitàutilizzadeterminatistandard
standard e proto olli, in gura 6.4 viene data una visione ompleta degli
standard e dei proto olliutilizzatineivari livellidello sta k.
Figura 6.4: Standard eProto olliutilizzatinello sta k deiservizi web
6.4 XML
XMLstapereXtensibleMarkupLanguage, èstatoprogettatoperlarappre-
sentazionedei dati, è un linguaggiodieti hettatura omel'HTML, però si
6.4.1 Prin ipali dierenze tra XML e HTML
• XML non ha tag predeniti, quindi per utilizzarlosi devono denire i propritag.
• XML èstato progettato per trasportare dati.
• XML non èun sostitutoper l'HTML.
• XML è fatto per des rivere le informazioni, HTML è fatto per visua- lizzareinformazioni.
6.4.2 Prin ipali aratteristi he
XML di persé non è altro he un insieme standard di regole sintatti he per
modellare la struttura di do umenti e dati. Questo insieme di regole, dette
più propriamente spe i he, denis ono le modalità se ondo ui è possibile
rearsiun propriolinguaggiodimarkup, spe i operiltipo diinformazione
hevienetrattata. Èun linguaggiofa ilmenteanalizzabile,estendibileeauto
des rittivo,inoltre èindipendente dalinguaggiepiattaforme utilizzatenelle
appli azioni.
Per tuttequeste aratteristi he èutilizzatonello s ambiodimessaggitra
servizi web eutentidei servizi.
Los ambiodimessaggiXML ostituis e labasedelSOAP,un messaggio
XML può ontenerequalsiasi osa: una query per un motoredi ri er a,una
ri hiesta diprezzo per una mer epresentein magazzino, la listadei voli di-
sponiliperunadeterminatatrattaaerea,oppurequalsiasialtrainformazione
he è rilevanteperuna parti olare appli azione.
6.5 SOAP
SOAP (SimpleObje t A ess Proto ol) è il proto olloalla base delle omu-
ni azionineiservizi web. Il proto ollo denis e:
• laspe i adellastrutturadeimessaggiutilizzati,inmododapermette- reuna omuni azioneindipendentedalproto ollodireteedalmodello
diprogrammazione
• un insieme di regole he permette la traduzione di insiemi di dati in
una rappresentazione XML
• le onvenzioniperrappresentarele hiamateapro edureremote(RPC)
6.5.1 S ambio di messaggi SOAP
Nell'ambito dei servizi web, SOAP è il proto ollo he permette lo s am-
bio dei dati. Infatti il liente ed il servizio web si s ambiano dei messaggi
XML.SOAPfornis ele onvenzioni hepermettonodide odi areimessaggi
s ambiati,in parti olare:
• Il tipodi informazioni he vengono s ambiate
• ome queste informazionivengono espresse utilizzandoXML
• ome eettuarel'invio delle informazioni.
Figura 6.5: S ambiodi messaggiSOAP [21℄
SOAP può essere implementato su altri proto olli di rete, ome HTTP,
SMTP,FTPealtri. Comemostratonellagura6.5ipassiprin ipali on ui
avviene los ambiodi messaggitraservizio web e liente sono:
1. Il liente he ha bisogno delservizio, rea un messaggioSOAP. Attra-
versoquestomessaggiosieettualari hiestadiinvo areilservizioweb
fornito dalservi e provider. Il lient SOAP interagis e on illivellodi
rete sottostantepereettuare l'inviodel massaggiosulla rete.
2. L'infrastruttura direte invia ilmessaggio alserver SOAP presente sul
servi e provider, il server SOAP una volta ri evuto il messaggio, lo
3. Il servizio web elabora il messaggio diri hiesta e in base a questo for-
nis e una risposta. La risposta è a sua volta un messaggioSOAP he
viene inviato alri hiedente delservizio attraverso larete.
4. Il messaggio di risposta viene ri evuto dal ri hiedente del servizio,
arrivandono all'appli azione he aveva eettuatola ri hiesta.
6.5.2 Il messaggio SOAP
Figura 6.6: Struttura delmessaggioSOAP
IlmessaggioSOAP(vedig6.6) onsisteinuninvolu ro(envelope) onte-
nente un'intestazione (header)opzionale ed un orpo (body). Nell'intestazio-
ne sono presenti le informazioni relativeal messaggio stesso (meta informa-
zioni),infattiin lude le impostazioniperl'inviodelmessaggio, informazioni
riguardanti l'autenti azione o l'autorizzazione e relative al ontesto in ui
avviene lo s ambio dei messaggi. Il orpo è il messaggiovero e proprio he
viene spedito e deve essere elaborato.
6.6 WSDL
Il Web Servi e Des ription Language (WSDL) è lo standard utilizzato per
spe i are la des rizione di un servizio web. Il servizio web usando WSDL
può des rivere qualiservizi oree omeil ri hiedente può utilizzarli.
• WSDL fornis e un appro io strutturatoperla denizione delle inter- fa edei serviziweb, questorendepiùfa ileimplementareemantenere
iservizi.
• WSDL rende più fa ile utilizzare i servizi web, ridu endo la quan-
tità di odi e (e i possibili errori) he un'appli azione liente deve
implementare
• Rende fa ile modi are il servizio web, onsentendo alle appli azio- niSOAP lienti di ontinuare a funzionare, infattiWSDL permettedi
trovaredinami amentetutteleinformazioniriguardantiilservizioweb,
quindi i ambiamentiverrano presi in onsiderazione inmaniera auto-
mati aattraverso lades rizioneWSDL,inquesto modoleappli azioni
lientinon dovranno subiregrosse modi he ognivolta he avvieneun
ambiamento.
Lades rizione WSDL nellamaggiorpartedei asi non deveessere reata
manualmente,infattiesistonoinnumerevoliappli ativietool he lagenerano
dinami amentepartendo da un servizio web esistente.
Inoltre attraverso lades rizione WSDL numerositoole appli azioniper-
mettono la reazione dinami a di lient stub e server stub quest'ultimi
hiamati an he skeleton.
Figura6.7: Generazione automati a distub e skeleton[22℄
6.6.1 Client Stub
S endendo maggiormente nel dettaglio rispetto a quanto des ritto in gu-
ra 6.5, tra il odi e del liente he ri hiede il servizio e il lient SOAP è
presente un lient stub ( ome mostrato in gura 6.7). Questo ri eve le ri-
hiesteprovenientidal lienteele onverte inri hiesteditipoSOAP, he poi
sarannoinviate sulla rete.
Inoltre ri eve le risposte SOAP provenienti dalla rete e le onverte nella
formaadatta al lientri hiedente.
6.6.2 Server Stub
Tra il servizio web ed il server SOAP è presente uno skeleton o server stub
(vedi gura 6.7), questo ri eve le ri hieste SOAP provenienti dal lientstub
ele onverte inmodo he siano nella formaadatta per ilservizio web.
Inoltre onverte le risposte del servizio web in messaggi SOAP he ven-
gono inviatial lient stub.
6.7 Il servizio web CONStanza
An he il servizio di onsistenza CONStanza è a essibile ome servizio web,
quindi presenta tutte le aratteristi he he sono state illustrate in questo
apitolo. Nei apitoli su essivi verrà mostrato ome sia possibile ottenere
la des rizione WSDL dei servizi remoti oerti, utilizzando il tool gSOAP
on ui CONStanza è stato sviluppato. Poi sarà mostrato ome reare in
manieraautomati a i lientstub attraverso lades rizione WSDL ed un tool
dell'appli ativoAxis. Innei lientstubsarannoutilizzatidaiJavaBeans he
sono allabase dell'interfa iaweb epermettono di ri hiederei servizi oerti
daCONStanza.