SlideShare a Scribd company logo
1 of 31
UNIVERSITA DEGLI STUDI DI CATANIA
Facoltà di Scienze Matematiche, Fisiche e Naturali
Corso di Laurea in Informatica, I° Livello
Studio e realizzazione di Web Services in Ambienti di SviluppoStudio e realizzazione di Web Services in Ambienti di Sviluppo
IntegratiIntegrati
Relatore: Chiar.mo Prof. Giuseppe
Pappalardo
Candidato: Marco Calandra
Sebastianella
Legame Sistemi Distribuiti/Web Services
 Sistemi distribuiti: calcolatori che scambiano
messaggi attraverso la rete tramite protocolli
definiti.
 Web services: si basano su una architettura
distribuita chiamata Service Oriented
Architecture (SOA)
Service Oriented Architecture (SOA)
 Architettura distribuita basata sui servizi che
rappresentano applicazioni definite che
risiedono su macchine diverse all’interno di
una rete.
 Un singolo servizio offre delle funzionalità e
può utilizzare quelle degli altri servizi, in
modo tale da realizzare applicazioni più
complesse.
Struttura della SOA
 Costituita da tre entità principali:
– Service Provider: entità che realizza uno o più
servizi da pubblicare in rete.
– Service Consumer: entità che ha bisogno di
utilizzare un servizio.
– Service Registry: entità che ha un registro
contenente i servizi pubblicati da diversi Service
Provider.
Funzionamento base della SOA
Service
Provider
Service
Consumer
Service
Registry
RETE
Pubblica Cerca
Richiede
Fornisce
Web Service (WS)
 Definizione dal w3g:
“Il web service è un’applicazione software identificata
da un URI, in cui le interfacce pubbliche e i
collegamenti sono definiti e descritti come documenti
XML in un formato comprensibile. La sua definizione
può essere ricercata da altri agenti software situati
nella rete, i quali possono interagire con i web
service utilizzando messaggi basati su XML
scambiati attraverso protocolli internet”.
Protocolli XML del Web Service
 I WS utilizzano protocolli che hanno la
sintassi XML:
– SOAP, Simple Object Access Control (acronimo
in disuso);
– WSDL, Web Service Description Language;
– UDDI, Universal Description, Discovery and
Integration.
WS usando l’architettura SOA
Service Provider
WSDL descr.
Service
Consumer
Service Registry
UDDI
RETE
Pubblica Cerca
Richiede
Fornisce
SOAP - HTTP
WSDL
 Web Service Definition Language (WSDL) che
descrive un web service e fornisce informazioni
riguardanti l’interfaccia di quest’ultimo, in termini di:
– Servizi offerti,
– URL ad esso associato,
– Modi per l’invocazione,
– Parametri accettati in ingresso e modalità con cui
debbono essere passati,
– Formato dei risultati restituiti.
Struttura documento WSDL
 Definition: radice che contiene i riferimenti alle
tecnologie utilizzate per definire il servizio (WSDL,
SOAP. XML Schema) e URL del servizio
– Types: si inserisce la tipologia dei dati (XML schema)
– Message: definisce i parametri di ingresso e uscita
– PortType: definisce le operazioni presenti nel servizio,
ognuna racchiusa nel tag figlio Operation
– Binding: stabisce il protocollo per lo scambio dei messaggi,
nel nostro caso SOAP+HTTP e come interagisce
– Service: indica la locazione del WS e di ognuno dei suoi
servizi indicando l’URL.
Esempio WSDL – 1
<wsdl:definitions
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tm="http://microsoft.com/wsdl/mime/textMatchin
g/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encod
ing/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:tns="http://www.webserviceX.NET"
xmlns:s="http://www.w3.org/2001/XMLSchema"
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12
/"
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
targetNamespace="http://www.webserviceX.NET"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<s:schema elementFormDefault="qualified"
targetNamespace="http://www.webserviceX.NET">
<s:element name="GetWeather">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="CityName" type="s:string" />
<s:element minOccurs="0" maxOccurs="1"
name="CountryName" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="GetWeatherResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="GetWeatherResult" type="s:string" />
<wsdl:message name="GetWeatherHttpGetIn">
<wsdl:part name="CityName" type="s:string" />
<wsdl:part name="CountryName" type="s:string" />
</wsdl:message>
<wsdl:message name="GetWeatherHttpGetOut">
<wsdl:part name="Body" element="tns:string" />
</wsdl:message>
<wsdl:operation name="GetCitiesByCountry">
<wsdl:documentation
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Get
all major cities by country name(full /
part).</wsdl:documentation>
<wsdl:input
message="tns:GetCitiesByCountryHttpGetIn" />
<wsdl:output
message="tns:GetCitiesByCountryHttpGetOut" />
</wsdl:operation>
Esempio WSDL - 2
<wsdl:binding name="GlobalWeatherSoap12"
type="tns:GlobalWeatherSoap">
<soap12:binding
transport="http://schemas.xmlsoap.org/soap/http" /
>
<wsdl:operation name="GetWeather">
<soap12:operation
soapAction="http://www.webserviceX.NET/GetWeather"
style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetCitiesByCountry">
<soap12:operation
soapAction="http://www.webserviceX.NET/GetCitiesBy
Country" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="GlobalWeather">
<wsdl:port name="GlobalWeatherSoap"
binding="tns:GlobalWeatherSoap">
<soap:address
location="http://www.webservicex.net/globalwe
ather.asmx" />
</wsdl:port>
<wsdl:port name="GlobalWeatherSoap12"
binding="tns:GlobalWeatherSoap12">
<soap12:address
location="http://www.webservicex.net/globalwe
ather.asmx" />
</wsdl:port>
<wsdl:port name="GlobalWeatherHttpGet"
binding="tns:GlobalWeatherHttpGet">
<http:address
location="http://www.webservicex.net/globalwe
ather.asmx" />
</wsdl:port>
<wsdl:port name="GlobalWeatherHttpPost"
binding="tns:GlobalWeatherHttpPost">
<http:address
location="http://www.webservicex.net/globalwe
ather.asmx" />
</wsdl:port>
</wsdl:service>
SOAP
 SOAP è un protocollo destinato allo scambio
di informazioni strutturate in un ambiente
distribuito decentralizzato.
 Il messaggio SOAP effettua una trasmissione
ad un “senso” (One way, Request-Responce,
Solecid-Responce, Notification), ed è
indipendente dal protocollo di trasporto con
cui viene trasmesso, anche se quello più
usato è il protocollo HTTP.
Struttura del messaggio SOAP
 Envelope: elemento root che contiene i namespace
e dati utilizzati nel messaggio
– Header: non obbligatorio, serve a definire se le macchine
intermedie possono elaborare il messaggio
(mustUnderstand, actor).
– Body: obbligatorio, contiene le informazioni per il
destinatario, che dovrà elaborarle in base al namespace
definito.
 Fault: presente nel messaggio di risposta nel caso in cui non si
riesce ad elaborare la richiesta (Faultcode, Faultstring.
Faultactor)
Trasporto del messaggio SOAP
POST /globalweather.asmx HTTP/1.1
Host: www.webservicex.net
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<GetCitiesByCountry xmlns="http://www.webserviceX.NET">
<CountryName>string</CountryName>
</GetCitiesByCountry>
</soap12:Body></soap12:Envelope> (Messaggio di Richiesta)HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<GetCitiesByCountryResponse xmlns="http://www.webserviceX.NET">
<GetCitiesByCountryResult>string</GetCitiesByCountryResult>
</GetCitiesByCountryResponse>
UDDI
 Universal Description Discovery and
Integration è il nome di un protocollo e di un
sistema di registri web che mette a
disposizione informazioni sui web service,
sulla loro localizzazione e sulle loro
interfacce.
Messaggio UDDI
 La struttura di un record UDDI è costituita da cinque parti
definite come strutture XML che possono interagire tra loro:
– businessEntity: contiene dati relativi ai contatti e agli indirizzi di un
fornitore dei servizi;
– businessService: descrive uno specifico servizio offerto da un
fornitore;
– bindingTemplate: fornisce le informazioni tecniche utilizzabili per
interfacciarsi con un determinato servizio;
– PublisherAssertion: fornisce informazioni sulle relazioni tra due
fornitori di servizi, dichiarate da una o da entrambe le parti.
– tModel: Meta-Descrizioni per servizi e tassonomie, definisce
astrattamente classi di servizi o tassonomie.
Interazioni con UDDI
 Avvengono tramite realizzazione delle API
(Application Programming Interface) .
– Inquiry: funzionalità che permettono agli utenti di
fare ricerche all’interno del registro
– Publishing: funzionalità che permettono ai fornitori
di inserire, modificare informazioni su se stessi e
sui propri servizi (dopo registrazione)
Realizzazione di un WS
 Per realizzare un WS, non è necessario conoscere
le sintassi dei protocolli che lo definiscono.
 I linguaggi di programmazione ad alto livello
contengono librerie o classi che, aggiunti nel codice,
realizzano veri e propri servizi web e, se eseguiti,
generano automaticamente il codice WSDL del
servizio e i messaggi SOAP di richiesta e risposta
che servono per lo scambio dei messaggi tra il client
e il WS.
IDE utilizzati per la realizzazione del WS
 Visual Studio 2010
– Linguaggio di programmazione: C#
– Componente: .NET Framework 4.0 o 3.5
 NetBeans 6.8
– Linguaggio di programmazione: Java
– Componente: Sun Glassfish Enterprice v3 o
Tomcat 6.0
Realizzazione di un WS – Visual Studio
 Dopo aver creato un progetto Asp.Net Web Application con C#, si procede come
segue.
Test di un WS – Visual Studio
a b
c d
Visualizzazione del WS Locale in Visual studio nel browser: a) pagina iniziale, b) WSDL del servizio, c)
test del metodo del servizio, d) risultato del metodo sottoforma di pagina XML
Realizzazione di un WS – NetBeans
 Dopo aver creato un progetto Web Application con Java Web, si procede come
segue.
Test di un WS – NetBeans
a b
c
Visualizzazione del WS Locale in NetBeans nel browser: a) pagina iniziale con test del metodo del servizio, b)
risultato del metodo comprendente i messaggi SOAP di richiesta e risposta, c) WSDL del servizio
Realizzazione di interfacce web che
utilizzano WS remoti – Visual Studio
Realizzazione di interfacce web che
utilizzano WS remoti – Visual Studio
a b
a) sito realizzato in Visual Studio, che sfrutta il web service remoto, b) stesso sito dopo aver ricevuto una richiesta
meteo, dove sono presenti le informazioni in una tabella
Realizzazione di interfacce web che
utilizzano WS remoti – NetBeans
Realizzazione di interfacce web che
utilizzano WS remoti – NetBeans
a b
Figura n. 24: a) la pagina di input del servizio, dove cliccando su uno stato, si apre una pagina servlet che chiama
il metodo del WS Remoto che visualizza le informazioni meteo della capitale dello stato selezionato (b)
Classi e librerie utilizzate
 Visual Studio (C# + ASP.NET)
– Formato file WS locale .asmx.cs
– Libreria System.Web.Service
 Classi WebService e WebMethodAttribute
– Classe generata WS remoto: Service.GlobalWheater
 NetBeans (Java)
– Formato file WS locale .java
– Libreria javax.jws.WebService
 Annotazione @WebService
– Classe generata WS remoto: net.webservicex.GlobalWheather
Conclusioni
 Tramite i protocolli del WS, possono
comunicare macchine realizzate con
linguaggi di programmazione diverse (WS
remoto in .NET comunica con interfaccia
realizzata in JAVA).
 Il protocollo UDDI non viene utilizzato dalle
applicazioni (Registry UDDI di Microsoft e
IBM chiusi nel 2006), forse conviene
ricercarli sui motori di ricerca?
Ringraziamenti
 Ai miei genitori
 Amici e parenti
 Alla mia ragazza, per avermi supportato,
sopportato e aiutato, un grazie di cuore
 Vorrei chiederti scusa Nonno, perché potevo
sbrigarmi prima e mi avresti visto laureato, ma
spero che da qualche parte sarai comunque
contento di me

More Related Content

Viewers also liked

Laboratorio di Web Design 2015/16 - Introduzione al corso
Laboratorio di Web Design 2015/16 - Introduzione al corsoLaboratorio di Web Design 2015/16 - Introduzione al corso
Laboratorio di Web Design 2015/16 - Introduzione al corsoGiovanni Buffa
 
Scuola dell'infanzia
Scuola dell'infanziaScuola dell'infanzia
Scuola dell'infanziaManuelavalle1
 
I discorsi e le parole
I discorsi e le parole I discorsi e le parole
I discorsi e le parole claudia pizzo
 
Benvenuti nella scuola dell'infanzia montessori
Benvenuti nella scuola dell'infanzia montessoriBenvenuti nella scuola dell'infanzia montessori
Benvenuti nella scuola dell'infanzia montessoriIlario Carrer
 
01 1-lintelligenza-numerica-nella-scuola-dellinfanzia-2
01 1-lintelligenza-numerica-nella-scuola-dellinfanzia-201 1-lintelligenza-numerica-nella-scuola-dellinfanzia-2
01 1-lintelligenza-numerica-nella-scuola-dellinfanzia-2imartini
 
La Storia Di Cappuccetto Rosso
La Storia Di Cappuccetto RossoLa Storia Di Cappuccetto Rosso
La Storia Di Cappuccetto RossoLoredana Messineo
 
Valutazione scuola infanzia
Valutazione scuola infanziaValutazione scuola infanzia
Valutazione scuola infanziaiva martini
 
Presentazione concorso primaria
Presentazione concorso primariaPresentazione concorso primaria
Presentazione concorso primariaclaudia pizzo
 

Viewers also liked (10)

Laboratorio di Web Design 2015/16 - Introduzione al corso
Laboratorio di Web Design 2015/16 - Introduzione al corsoLaboratorio di Web Design 2015/16 - Introduzione al corso
Laboratorio di Web Design 2015/16 - Introduzione al corso
 
Lezione 01/2006
Lezione 01/2006Lezione 01/2006
Lezione 01/2006
 
Scuola dell'infanzia
Scuola dell'infanziaScuola dell'infanzia
Scuola dell'infanzia
 
I discorsi e le parole
I discorsi e le parole I discorsi e le parole
I discorsi e le parole
 
Benvenuti nella scuola dell'infanzia montessori
Benvenuti nella scuola dell'infanzia montessoriBenvenuti nella scuola dell'infanzia montessori
Benvenuti nella scuola dell'infanzia montessori
 
01 1-lintelligenza-numerica-nella-scuola-dellinfanzia-2
01 1-lintelligenza-numerica-nella-scuola-dellinfanzia-201 1-lintelligenza-numerica-nella-scuola-dellinfanzia-2
01 1-lintelligenza-numerica-nella-scuola-dellinfanzia-2
 
La Storia Di Cappuccetto Rosso
La Storia Di Cappuccetto RossoLa Storia Di Cappuccetto Rosso
La Storia Di Cappuccetto Rosso
 
Valutazione scuola infanzia
Valutazione scuola infanziaValutazione scuola infanzia
Valutazione scuola infanzia
 
Presentazione concorso primaria
Presentazione concorso primariaPresentazione concorso primaria
Presentazione concorso primaria
 
2016
20162016
2016
 

Similar to Studio e realizzazione di Web Services in Ambienti di Sviluppo Integrati

Rubrica pubblica ateneo
Rubrica pubblica ateneoRubrica pubblica ateneo
Rubrica pubblica ateneodgaglioti
 
Il mercato SOA: futuro e prospettive
Il mercato SOA: futuro e prospettiveIl mercato SOA: futuro e prospettive
Il mercato SOA: futuro e prospettiveEmanuele Della Valle
 
Introduzione ai Web Services
Introduzione ai Web ServicesIntroduzione ai Web Services
Introduzione ai Web ServicesMarco Livraghi
 
[ITA] Introduzione ai web services: SOAP, WSDL, UDDI
[ITA] Introduzione ai web services: SOAP, WSDL, UDDI[ITA] Introduzione ai web services: SOAP, WSDL, UDDI
[ITA] Introduzione ai web services: SOAP, WSDL, UDDIMarco Brambilla
 
Service Registry Repository Opensource implementato su Semantic Media Wiki
Service Registry Repository Opensource implementato su Semantic Media WikiService Registry Repository Opensource implementato su Semantic Media Wiki
Service Registry Repository Opensource implementato su Semantic Media WikiMatteo Busanelli
 
Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Whymca
 
SVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROIDSVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROIDLuca Masini
 
Rendere flessibili e trasformare architetture IT di vecchio tipo: passaggio d...
Rendere flessibili e trasformare architetture IT di vecchio tipo:passaggio d...Rendere flessibili e trasformare architetture IT di vecchio tipo:passaggio d...
Rendere flessibili e trasformare architetture IT di vecchio tipo: passaggio d...Emanuele Della Valle
 
Tesi Discussione
Tesi DiscussioneTesi Discussione
Tesi DiscussioneYeser Rema
 
SugarCRM Web Services: Build a Apache CXF Client
SugarCRM Web Services: Build a Apache CXF ClientSugarCRM Web Services: Build a Apache CXF Client
SugarCRM Web Services: Build a Apache CXF ClientAntonio Musarra
 
Microsoft Azure for DreamSpark Academic Tour - 22/01/2016
Microsoft Azure for DreamSpark Academic Tour - 22/01/2016Microsoft Azure for DreamSpark Academic Tour - 22/01/2016
Microsoft Azure for DreamSpark Academic Tour - 22/01/2016Gaetano Paternò
 
Designing with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDaniele Mondello
 
.NET Microservices
.NET Microservices.NET Microservices
.NET MicroservicesLuca Congiu
 
Microservices architecture & Service Fabric
Microservices architecture & Service FabricMicroservices architecture & Service Fabric
Microservices architecture & Service FabricMassimo Bonanni
 

Similar to Studio e realizzazione di Web Services in Ambienti di Sviluppo Integrati (20)

Corso web services
Corso web servicesCorso web services
Corso web services
 
Rubrica pubblica ateneo
Rubrica pubblica ateneoRubrica pubblica ateneo
Rubrica pubblica ateneo
 
Fast Wsdl Tutorial
Fast Wsdl TutorialFast Wsdl Tutorial
Fast Wsdl Tutorial
 
Rubrica pubblica ateneo
Rubrica pubblica ateneoRubrica pubblica ateneo
Rubrica pubblica ateneo
 
Il mercato SOA: futuro e prospettive
Il mercato SOA: futuro e prospettiveIl mercato SOA: futuro e prospettive
Il mercato SOA: futuro e prospettive
 
Introduzione ai Web Services
Introduzione ai Web ServicesIntroduzione ai Web Services
Introduzione ai Web Services
 
[ITA] Introduzione ai web services: SOAP, WSDL, UDDI
[ITA] Introduzione ai web services: SOAP, WSDL, UDDI[ITA] Introduzione ai web services: SOAP, WSDL, UDDI
[ITA] Introduzione ai web services: SOAP, WSDL, UDDI
 
Spcoop.ver 1.4
Spcoop.ver 1.4Spcoop.ver 1.4
Spcoop.ver 1.4
 
Service Registry Repository Opensource implementato su Semantic Media Wiki
Service Registry Repository Opensource implementato su Semantic Media WikiService Registry Repository Opensource implementato su Semantic Media Wiki
Service Registry Repository Opensource implementato su Semantic Media Wiki
 
Rubrica Pubblica Ateneo
Rubrica Pubblica AteneoRubrica Pubblica Ateneo
Rubrica Pubblica Ateneo
 
Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini
 
SVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROIDSVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROID
 
Rendere flessibili e trasformare architetture IT di vecchio tipo: passaggio d...
Rendere flessibili e trasformare architetture IT di vecchio tipo:passaggio d...Rendere flessibili e trasformare architetture IT di vecchio tipo:passaggio d...
Rendere flessibili e trasformare architetture IT di vecchio tipo: passaggio d...
 
Tesi Discussione
Tesi DiscussioneTesi Discussione
Tesi Discussione
 
Architetture.Distribuite
Architetture.DistribuiteArchitetture.Distribuite
Architetture.Distribuite
 
SugarCRM Web Services: Build a Apache CXF Client
SugarCRM Web Services: Build a Apache CXF ClientSugarCRM Web Services: Build a Apache CXF Client
SugarCRM Web Services: Build a Apache CXF Client
 
Microsoft Azure for DreamSpark Academic Tour - 22/01/2016
Microsoft Azure for DreamSpark Academic Tour - 22/01/2016Microsoft Azure for DreamSpark Academic Tour - 22/01/2016
Microsoft Azure for DreamSpark Academic Tour - 22/01/2016
 
Designing with microservices - Daniele Mondello
Designing with microservices - Daniele MondelloDesigning with microservices - Daniele Mondello
Designing with microservices - Daniele Mondello
 
.NET Microservices
.NET Microservices.NET Microservices
.NET Microservices
 
Microservices architecture & Service Fabric
Microservices architecture & Service FabricMicroservices architecture & Service Fabric
Microservices architecture & Service Fabric
 

Studio e realizzazione di Web Services in Ambienti di Sviluppo Integrati

  • 1. UNIVERSITA DEGLI STUDI DI CATANIA Facoltà di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica, I° Livello Studio e realizzazione di Web Services in Ambienti di SviluppoStudio e realizzazione di Web Services in Ambienti di Sviluppo IntegratiIntegrati Relatore: Chiar.mo Prof. Giuseppe Pappalardo Candidato: Marco Calandra Sebastianella
  • 2. Legame Sistemi Distribuiti/Web Services  Sistemi distribuiti: calcolatori che scambiano messaggi attraverso la rete tramite protocolli definiti.  Web services: si basano su una architettura distribuita chiamata Service Oriented Architecture (SOA)
  • 3. Service Oriented Architecture (SOA)  Architettura distribuita basata sui servizi che rappresentano applicazioni definite che risiedono su macchine diverse all’interno di una rete.  Un singolo servizio offre delle funzionalità e può utilizzare quelle degli altri servizi, in modo tale da realizzare applicazioni più complesse.
  • 4. Struttura della SOA  Costituita da tre entità principali: – Service Provider: entità che realizza uno o più servizi da pubblicare in rete. – Service Consumer: entità che ha bisogno di utilizzare un servizio. – Service Registry: entità che ha un registro contenente i servizi pubblicati da diversi Service Provider.
  • 5. Funzionamento base della SOA Service Provider Service Consumer Service Registry RETE Pubblica Cerca Richiede Fornisce
  • 6. Web Service (WS)  Definizione dal w3g: “Il web service è un’applicazione software identificata da un URI, in cui le interfacce pubbliche e i collegamenti sono definiti e descritti come documenti XML in un formato comprensibile. La sua definizione può essere ricercata da altri agenti software situati nella rete, i quali possono interagire con i web service utilizzando messaggi basati su XML scambiati attraverso protocolli internet”.
  • 7. Protocolli XML del Web Service  I WS utilizzano protocolli che hanno la sintassi XML: – SOAP, Simple Object Access Control (acronimo in disuso); – WSDL, Web Service Description Language; – UDDI, Universal Description, Discovery and Integration.
  • 8. WS usando l’architettura SOA Service Provider WSDL descr. Service Consumer Service Registry UDDI RETE Pubblica Cerca Richiede Fornisce SOAP - HTTP
  • 9. WSDL  Web Service Definition Language (WSDL) che descrive un web service e fornisce informazioni riguardanti l’interfaccia di quest’ultimo, in termini di: – Servizi offerti, – URL ad esso associato, – Modi per l’invocazione, – Parametri accettati in ingresso e modalità con cui debbono essere passati, – Formato dei risultati restituiti.
  • 10. Struttura documento WSDL  Definition: radice che contiene i riferimenti alle tecnologie utilizzate per definire il servizio (WSDL, SOAP. XML Schema) e URL del servizio – Types: si inserisce la tipologia dei dati (XML schema) – Message: definisce i parametri di ingresso e uscita – PortType: definisce le operazioni presenti nel servizio, ognuna racchiusa nel tag figlio Operation – Binding: stabisce il protocollo per lo scambio dei messaggi, nel nostro caso SOAP+HTTP e come interagisce – Service: indica la locazione del WS e di ognuno dei suoi servizi indicando l’URL.
  • 11. Esempio WSDL – 1 <wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatchin g/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encod ing/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://www.webserviceX.NET" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12 /" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" targetNamespace="http://www.webserviceX.NET" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> <wsdl:types> <s:schema elementFormDefault="qualified" targetNamespace="http://www.webserviceX.NET"> <s:element name="GetWeather"> <s:complexType> <s:sequence> <s:element minOccurs="0" maxOccurs="1" name="CityName" type="s:string" /> <s:element minOccurs="0" maxOccurs="1" name="CountryName" type="s:string" /> </s:sequence> </s:complexType> </s:element> <s:element name="GetWeatherResponse"> <s:complexType> <s:sequence> <s:element minOccurs="0" maxOccurs="1" name="GetWeatherResult" type="s:string" /> <wsdl:message name="GetWeatherHttpGetIn"> <wsdl:part name="CityName" type="s:string" /> <wsdl:part name="CountryName" type="s:string" /> </wsdl:message> <wsdl:message name="GetWeatherHttpGetOut"> <wsdl:part name="Body" element="tns:string" /> </wsdl:message> <wsdl:operation name="GetCitiesByCountry"> <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Get all major cities by country name(full / part).</wsdl:documentation> <wsdl:input message="tns:GetCitiesByCountryHttpGetIn" /> <wsdl:output message="tns:GetCitiesByCountryHttpGetOut" /> </wsdl:operation>
  • 12. Esempio WSDL - 2 <wsdl:binding name="GlobalWeatherSoap12" type="tns:GlobalWeatherSoap"> <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" / > <wsdl:operation name="GetWeather"> <soap12:operation soapAction="http://www.webserviceX.NET/GetWeather" style="document" /> <wsdl:input> <soap12:body use="literal" /> </wsdl:input> <wsdl:output> <soap12:body use="literal" /> </wsdl:output> </wsdl:operation> <wsdl:operation name="GetCitiesByCountry"> <soap12:operation soapAction="http://www.webserviceX.NET/GetCitiesBy Country" style="document" /> <wsdl:input> <soap12:body use="literal" /> </wsdl:input> <wsdl:output> <soap12:body use="literal" /> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="GlobalWeather"> <wsdl:port name="GlobalWeatherSoap" binding="tns:GlobalWeatherSoap"> <soap:address location="http://www.webservicex.net/globalwe ather.asmx" /> </wsdl:port> <wsdl:port name="GlobalWeatherSoap12" binding="tns:GlobalWeatherSoap12"> <soap12:address location="http://www.webservicex.net/globalwe ather.asmx" /> </wsdl:port> <wsdl:port name="GlobalWeatherHttpGet" binding="tns:GlobalWeatherHttpGet"> <http:address location="http://www.webservicex.net/globalwe ather.asmx" /> </wsdl:port> <wsdl:port name="GlobalWeatherHttpPost" binding="tns:GlobalWeatherHttpPost"> <http:address location="http://www.webservicex.net/globalwe ather.asmx" /> </wsdl:port> </wsdl:service>
  • 13. SOAP  SOAP è un protocollo destinato allo scambio di informazioni strutturate in un ambiente distribuito decentralizzato.  Il messaggio SOAP effettua una trasmissione ad un “senso” (One way, Request-Responce, Solecid-Responce, Notification), ed è indipendente dal protocollo di trasporto con cui viene trasmesso, anche se quello più usato è il protocollo HTTP.
  • 14. Struttura del messaggio SOAP  Envelope: elemento root che contiene i namespace e dati utilizzati nel messaggio – Header: non obbligatorio, serve a definire se le macchine intermedie possono elaborare il messaggio (mustUnderstand, actor). – Body: obbligatorio, contiene le informazioni per il destinatario, che dovrà elaborarle in base al namespace definito.  Fault: presente nel messaggio di risposta nel caso in cui non si riesce ad elaborare la richiesta (Faultcode, Faultstring. Faultactor)
  • 15. Trasporto del messaggio SOAP POST /globalweather.asmx HTTP/1.1 Host: www.webservicex.net Content-Type: application/soap+xml; charset=utf-8 Content-Length: length <?xml version="1.0" encoding="utf-8"?> <soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"> <soap12:Body> <GetCitiesByCountry xmlns="http://www.webserviceX.NET"> <CountryName>string</CountryName> </GetCitiesByCountry> </soap12:Body></soap12:Envelope> (Messaggio di Richiesta)HTTP/1.1 200 OK Content-Type: application/soap+xml; charset=utf-8 Content-Length: length <?xml version="1.0" encoding="utf-8"?> <soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"> <soap12:Body> <GetCitiesByCountryResponse xmlns="http://www.webserviceX.NET"> <GetCitiesByCountryResult>string</GetCitiesByCountryResult> </GetCitiesByCountryResponse>
  • 16. UDDI  Universal Description Discovery and Integration è il nome di un protocollo e di un sistema di registri web che mette a disposizione informazioni sui web service, sulla loro localizzazione e sulle loro interfacce.
  • 17. Messaggio UDDI  La struttura di un record UDDI è costituita da cinque parti definite come strutture XML che possono interagire tra loro: – businessEntity: contiene dati relativi ai contatti e agli indirizzi di un fornitore dei servizi; – businessService: descrive uno specifico servizio offerto da un fornitore; – bindingTemplate: fornisce le informazioni tecniche utilizzabili per interfacciarsi con un determinato servizio; – PublisherAssertion: fornisce informazioni sulle relazioni tra due fornitori di servizi, dichiarate da una o da entrambe le parti. – tModel: Meta-Descrizioni per servizi e tassonomie, definisce astrattamente classi di servizi o tassonomie.
  • 18. Interazioni con UDDI  Avvengono tramite realizzazione delle API (Application Programming Interface) . – Inquiry: funzionalità che permettono agli utenti di fare ricerche all’interno del registro – Publishing: funzionalità che permettono ai fornitori di inserire, modificare informazioni su se stessi e sui propri servizi (dopo registrazione)
  • 19. Realizzazione di un WS  Per realizzare un WS, non è necessario conoscere le sintassi dei protocolli che lo definiscono.  I linguaggi di programmazione ad alto livello contengono librerie o classi che, aggiunti nel codice, realizzano veri e propri servizi web e, se eseguiti, generano automaticamente il codice WSDL del servizio e i messaggi SOAP di richiesta e risposta che servono per lo scambio dei messaggi tra il client e il WS.
  • 20. IDE utilizzati per la realizzazione del WS  Visual Studio 2010 – Linguaggio di programmazione: C# – Componente: .NET Framework 4.0 o 3.5  NetBeans 6.8 – Linguaggio di programmazione: Java – Componente: Sun Glassfish Enterprice v3 o Tomcat 6.0
  • 21. Realizzazione di un WS – Visual Studio  Dopo aver creato un progetto Asp.Net Web Application con C#, si procede come segue.
  • 22. Test di un WS – Visual Studio a b c d Visualizzazione del WS Locale in Visual studio nel browser: a) pagina iniziale, b) WSDL del servizio, c) test del metodo del servizio, d) risultato del metodo sottoforma di pagina XML
  • 23. Realizzazione di un WS – NetBeans  Dopo aver creato un progetto Web Application con Java Web, si procede come segue.
  • 24. Test di un WS – NetBeans a b c Visualizzazione del WS Locale in NetBeans nel browser: a) pagina iniziale con test del metodo del servizio, b) risultato del metodo comprendente i messaggi SOAP di richiesta e risposta, c) WSDL del servizio
  • 25. Realizzazione di interfacce web che utilizzano WS remoti – Visual Studio
  • 26. Realizzazione di interfacce web che utilizzano WS remoti – Visual Studio a b a) sito realizzato in Visual Studio, che sfrutta il web service remoto, b) stesso sito dopo aver ricevuto una richiesta meteo, dove sono presenti le informazioni in una tabella
  • 27. Realizzazione di interfacce web che utilizzano WS remoti – NetBeans
  • 28. Realizzazione di interfacce web che utilizzano WS remoti – NetBeans a b Figura n. 24: a) la pagina di input del servizio, dove cliccando su uno stato, si apre una pagina servlet che chiama il metodo del WS Remoto che visualizza le informazioni meteo della capitale dello stato selezionato (b)
  • 29. Classi e librerie utilizzate  Visual Studio (C# + ASP.NET) – Formato file WS locale .asmx.cs – Libreria System.Web.Service  Classi WebService e WebMethodAttribute – Classe generata WS remoto: Service.GlobalWheater  NetBeans (Java) – Formato file WS locale .java – Libreria javax.jws.WebService  Annotazione @WebService – Classe generata WS remoto: net.webservicex.GlobalWheather
  • 30. Conclusioni  Tramite i protocolli del WS, possono comunicare macchine realizzate con linguaggi di programmazione diverse (WS remoto in .NET comunica con interfaccia realizzata in JAVA).  Il protocollo UDDI non viene utilizzato dalle applicazioni (Registry UDDI di Microsoft e IBM chiusi nel 2006), forse conviene ricercarli sui motori di ricerca?
  • 31. Ringraziamenti  Ai miei genitori  Amici e parenti  Alla mia ragazza, per avermi supportato, sopportato e aiutato, un grazie di cuore  Vorrei chiederti scusa Nonno, perché potevo sbrigarmi prima e mi avresti visto laureato, ma spero che da qualche parte sarai comunque contento di me