Università degli Studi di Roma Tor Vergata Dipartimento di Ingegneria Civile e Ingegneria Informatica Introduzione a Service Oriented Architecture e Web Service Corso di Sistemi Distribuiti e Cloud Computing A.A. 2013/14 Valeria Cardellini Service Oriented Architecture Service Oriented Architecture (SOA): paradigma architetturale per progettare sistemi sw distribuiti lascamente accoppiati Definizione Open Group: stile architectutturale che supporta l orientamento a servizi Definizione OASIS: paradigma per l organizzazione e l utilizzazione di risorse distribuite che possono essere sotto il controllo di domini di proprietà differenti. Fornisce un mezzo uniforme per offrire, scoprire, interagire ed usare le capacità di produrre gli effetti voluti in modo consistente con presupposti e aspettative misurabili Proprietà (secondo W3C, http://www.w3.org/tr/ws-arch/) Vista logica Orientamento ai messaggi e alla descrizione Granularità dei servizi, orientamento alla rete, neutralità della piattaforma 1
Service Oriented Architecture (2)! Tre entità che interagiscono tra loro! Service requestor o consumer: richiede l esecuzione di un servizio! Service provider: implementa il servizio e lo rende disponibile! Service registry: offre un servizio di pubblicazione e di ricerca di servizi disponibili 2 SOA!= Web Service! SOA: paradigma architetturale! Web service: principale implementazione di SOA! Ma è possibile implementare SOA anche in Java, C#, Java EE, CORBA, DCOM, 3
Definizione di Web service! Definizione tratta dal tutorial introduttivo dell IBM Web Services - The Web's next revolution Si focalizza sull integrazione dei Web service in Internet e sulle interazioni con i sistemi sw in essa operanti Web services are a new breed of Web application. They are self-contained, self-describing, modular applications that can be published, located, and invoked across the Web. Web services perform functions that can be anything from simple requests to complicated business processes. A sample Web service might provide stock quotes or process credit card transactions. Once a Web service is deployed, other applications (and other Web services) can discover and invoke the deployed service. 4 Definizione di Web service (2)! Definizione fornita dal W3C http://www.w3.org/tr/ws-arch/ Si focalizza sulla definizione del contesto tecnologico nel quale operano i Web service e sugli standard da utilizzare A Web service is a software system designed to support interoperable machine-to-machine interaction over a network. It has an interface described in a machine-processable format (specifically WSDL). Other systems interact with the Web service in a manner prescribed by its description using SOAP messages, typically conveyed using HTTP with an XML serialization in conjunction with other Web-related standards. 5
Definizione di Web service (3) In definitiva, possono essere visti come una tecnologia basata su standard aperti per favorire l'integrazione e l'interoperabilità di applicazioni, che permette di esporle come pacchetti auto-contenuti ed auto-descritti L accesso ad applicazioni basate su Web service è reso facile dal fatto che possono essere pubblicate, trovate ed invocate sul Web 6 Web service! Componente software indipendente dalla piattaforma e dall implementazione che può essere: Descritto usando un linguaggio di descrizione del servizio Pubblicato in un registro di servizi Scoperto mediante un meccanismo standard (a runtime o a tempo di progetto) Invocato su rete mediante un API Composto con altri servizi Un client non sa quale linguaggio di programmazione, sistema operativo, è stato usato Non possono essere inviati o ricevuti dati binari (ma ci sono eccezioni) <name>character data </ name><cost>123.45</ cost> <response>character data </response> 7
Web service (2)! Componente software indipendente dalla piattaforma e dall implementazione che può essere: Descritto usando un linguaggio di descrizione del servizio Pubblicato in un registro di servizi Scoperto mediante un meccanismo standard (a runtime o a tempo di progetto) Invocato su rete mediante un API Composto con altri servizi Un Web service deve descrivere se stesso: quali tipi di richieste può soddisfare, quali sono i parametri di input ed output, quale è il trasporto What information do you need? 2 arguments: (1) Item name (2) Quantity 8 Web service (3)! Componente software indipendente dalla piattaforma e dall implementazione che può essere: Descritto usando un linguaggio di descrizione del servizio Pubblicato in un registro di servizi Scoperto mediante un meccanismo standard (a runtime o a tempo di progetto) Invocato su rete mediante un API Composto con altri servizi Un Web service deve indicare ad un registro di servizi dove è localizzato Here I am Where is a service that I can use to find airline flight schedules? 9
Web service (4)! Componente software indipendente dalla piattaforma e dall implementazione che può essere: Descritto usando un linguaggio di descrizione del servizio Pubblicato in un registro di servizi Scoperto mediante un meccanismo standard (a runtime o a tempo di progetto) Invocato su rete mediante un API Composto con altri servizi Un potenziale client deve trovare il Web service in un registro di servizi Here I am Where is a service that I can use to find airline flight schedules? 10 Web service (5)! Componente software indipendente dalla piattaforma e dall implementazione che può essere: Descritto usando un linguaggio di descrizione del servizio Pubblicato in un registro di servizi Scoperto mediante un meccanismo standard (a runtime o a tempo di progetto) Invocato su rete mediante un API Composto con altri servizi Le operazioni invocabili ed i loro parametri di input ed output devono essere noti <name>character data </ name><cost>123.45</ cost> <response>character data </response> API nota 11
Web service (6)! Componente software indipendente dalla piattaforma e dall implementazione che può essere: Descritto usando un linguaggio di descrizione del servizio Pubblicato in un registro di servizi Scoperto mediante un meccanismo standard (a runtime o a tempo di progetto) Invocato su rete mediante un API Composto con altri servizi Il servizio può a sua volta essere un client di un altro servizio <name>character data </ name><cost>123.45</ cost> <response>character data </response> 12 Classificazione dei servizi Servizi semplici Livello di composizione Servizi composti Servizi stateless Gestione dello stato Servizi stateful Modello di comunicazione Servizi sincroni Servizi asincroni 13
Web service stack! Architettura definita su sei livelli principali BPEL, BPMN, UDDI WSDL SOAP HTTP Service Integration Service Discovery Service Publication Service Description XML-based messaging Transport 14 Perché XML e Web service?! I Web service si basano sul linguaggio XML perché indipendente da linguaggi, applicazioni e piattaforme specifiche! XML garantisce Ricchezza espressiva Estendibilità Portabilità Facilità di comprensione! Gli schemi XML possono essere validati da entrambe le parti che comunicano 15
Web service interaction 16 BPEL, BPMN, UDDI WSDL SOAP HTTP Service Integration Service Discovery Service Publication Service Description XML-based messaging Transport 17
Simple Object Access Protocol (SOAP)! E un semplice protocollo basato su XML e progettato per lo scambio di informazioni da parte di applicazioni indipendentemente dal protocollo di trasporto utilizzato (HTTP, SMTP, FTP, IIOP, MQ, )! E il protocollo utilizzato dai Web Service per lo scambio di messaggi! Protocollo one-way e asincrono, ma utilizzato per realizzare RPC sul Web 18 SOAP processing model! SOAP definisce un processing model distribuito al quale partecipano: SOAP message SOAP sender SOAP receiver SOAP intermediary! Il SOAP processing model specifica in che modo un SOAP receiver processa un SOAP message Si applica ad ogni singolo messaggio, isolato da tutti gli altri 19
SOAP processing model (2)! Nel processare un messaggio SOAP, un nodo SOAP agisce in uno o più SOAP role! Ciascun role è identificato da un URI chiamato SOAP role name! I ruoli assunti da un nodo non possono variare all atto di processare un messaggio 20 Struttura del messaggio SOAP! Envelope: contenitore delle diverse parti di un messaggio! Body (obbligatorio): parte centrale del messaggio, contiene il dato del messaggio vero e proprio! Può opzionalmente contenere una sotto-parte chiamata SOAP Fault! Header (opzionale): informazioni addizionali al messaggio, divise in blocchi, per i diversi attori coinvolti SOAP Envelope SOAP Header(opz.) Header Block 1 Header Block N SOAP Body (obbligatorio)! I contenuti di ogni parte non sono specificati in SOAP 21
Struttura del messaggio SOAP (2) <?xml version= 1.0 encoding= UTF-8 > <env:envelope xmlns:env= http://www.w3.org/2003/05/soapenvelope > <env:header> <!-- optional --> <!-- Content of header goes here --> </env:header> <env:body> <! Payload or Fault element goes here --> </env:body> </env:envelope> 22 Uno scambio di messaggi SOAP Messaggio di richiesta <?xml version="1.0" encoding="utf-8"?> <S:Envelope xmlns:s="http://www.w3.org/2003/05/soapenvelope"> <S:Body> <ns2:sum xmlns="http://it.testws.echows/xsd" xmlns:ns2="http://it.testws.echows"> <ns2:a>4</ns2:a> <ns2:b>5</ns2:b> </ns2:sum> </S:Body> </S:Envelope> 23
Uno scambio di messaggi SOAP (2) Messaggio di risposta <?xml version="1.0" encoding="utf-8"?> <soapenv:envelope xmlns:soapenv="http://www.w3.org/ 2003/05/soap-envelope"> <soapenv:body> <ns:sumresponse xmlns:ns="http:// it.testws.echows"> <ns:return>9</ns:return> </ns:sumresponse> </soapenv:body> </soapenv:envelope> 24 Gestione degli errori: SOAP fault! SOAP fornisce un modello per gestire situazioni di errore nell elaborazione di un messaggio! L elemento Body ha un sottoelemento particolare (Fault) in cui specificare le informazioni sull errore verificatosi! L elemento Fault contiene:! faultcode: codice che identifica il fault! faultstring: stringa che descrive il fault! detail (opzionale): informazioni applicative specifiche! faultactor (opzionale): identifica il SOAP processor che ha generato l errore 25
Sample SOAP request-response for creating an S3 bucket SOAP Request SOAP Response <soap:envelope xmlns:soap="http://www.w3.org/2003/05/soapenvelope" soap:encodingstyle= "http://www.w3.org/2001/12/soap-encoding"> <soap:body> <CreateBucket xmlns="http:// doc.s3.amazonaws.com/2010-03-15"> <Bucket>SampleBucket</Bucket> <AWSAccessKeyId> 1B9FVRAYCP1VJEXAMPLE= </AWSAccessKeyId> <Timestamp>2010-03-15T14:40:00.165Z </Timestamp> <Signature>Iuyz3d3P0aTou39dzbqaEXAMPLE =</Signature> </CreateBucket> </soap:body> </soap:envelope> <soap:envelope xmlns:soap="http://www.w3.org/2003/05/ soap-envelope" soap:encodingstyle= "http://www.w3.org/2001/12/soap-encoding"> <soap:body> <CreateBucket xmlns="http:// doc.s3.amazonaws.com/2010-03-15"> <Bucket>SampleBucket</Bucket> <AWSAccessKeyId>1B9FVRAYCP1VJEXAMP LE= </AWSAccessKeyId> <Timestamp>2010-03-15T14:40:00.165Z </Timestamp> <Signature>Iuyz3d3P0aTou39dzbqaEXAMPLE =</Signature> </CreateBucket> </soap:body> </soap:envelope> Copyright 2012, Elsevier Inc. All rights reserved. 1-26 26 BPEL, BPMN, UDDI WSDL SOAP HTTP Service Integration Service Discovery Service Publication Service Description XML-based messaging Transport 27
Web Service Description Language (WSDL)! Un file WSDL è un tipo di documento XML contenente informazioni sul relativo Web service La descrizione della sua interfaccia Dettagli amministrativi per la sua invocazione! Quando un service requestor vuole usare un Web service Individua il servizio (ad es. tramite UDDI) Richiede il file WSDL Analizza il file WSDL per determinare La locazione del Web service Le operazioni offerte ed i relativi parametri di input ed output Come accedere alle operazioni Crea una richiesta SOAP Invia la richiesta SOAP al Web service 28 WSDL (2) WSDL è un linguaggio basato su XML per definire e descrivere Web service Versioni: WSDL 1.1 e WSDL 2.0 Descrive un Web service fornendo le informazioni necessarie per sviluppare client che intendano utilizzarlo in base alla sintassi XML Un file WSDL specifica la locazione (URL) del Web service e le operazioni offerte, mediante: Una descrizione astratta di una classe di servizi Un insieme di descrizioni di servizi concreti, conformi alla descrizione astratta 29
WSDL 1.1: parte astratta! La parte astratta di un descrittore WSDL specifica:! Un insieme (opzionale) di tipi (types): nuovi tipi XML schema che potranno essere usati nella specifica! Un insieme di messaggi (message): descrizioni astratte (tipi e nomi) dei dati scambiati con il Web service (eventualmente usando i tipi sopra definiti)! Un insieme di operazioni (operation): descrizioni astratte delle azioni supportate da un Web service! Uno o più port type (porttype): insiemi di operazioni correlate dal punto di vista applicativo 30 WSDL 1.1: parte concreta! La parte concreta di un descrittore WSDL specifica: binding: il particolare protocollo di comunicazione per un certo porttype; è possibile specificare diversi binding per lo stesso porttype (es. su HTTP, SMTP ecc.) port: modulo concreto costituito da: un porttype: interfaccia e specifica del servizio un binding: come funziona il servizio un indirizzo URL: dove trovare il servizio service: fornitore di servizio concreto formato da un insieme di port 31
Struttura di un file WSDL 1.1 <definitions> <types> i tipi di dato che verranno trasmessi </types> <message> i messaggi scambiati(messaggi di input, messaggi di output, messaggi di errore) </message> <porttype> le operazioni (funzioni) supportate </porttype> <binding> come si scambiano i messaggi (dettagli SOAP) </binding> <service> dove trovare il servizio </service> </definitions> 32 Tipi di operazioni WSDL! Una operazione (operation) può essere:! one-way: il Web service riceve un messaggio (input message)! request-response: il Web service riceve una richiesta (input message) e restituisce la risposta relativa (output message)! solicit-response: il Web service invia un messaggio (output message) e riceve una risposta (input message)! notification: il Web service invia un messaggio (output message) 33
Esempio: servizio di dizionario <message name= gettranslationrequest > <part name= word type= xs:string /> </message> <message name= gettranslationresponse > <part name= value type= xs:string /> </message> Request-response operation <porttype name= dictionaryservice > <operation name= gettranslation > <input message= gettranslationrequest /> <output message= gettranslationresponse /> </operation> altre operation </porttype> 34 Riferimento al porttype <binding type= dictionaryservice name= bind1 > <soap:binding transport= http://schemas.xmlsoap.org/soap/http /> <operation> <soap:operation soapaction= http://webml.org/ gettransl /> <input> <soap:body use= literal /> </input> <output> <soap:body use="encoded" namespace="urn:encname" encodingstyle="http://schemas.xmlsoap.org/ soap/encoding/"/> </output> </operation> </binding> Esempio (2) - SOAP binding SOAP su HTTP Eventuale tipo di encoding 35
Esempio (3) - endpoint <service name="dictservice"> <port name="dictionaryservice binding="bind1"> porttype binding <soap:address location="http://www.dict.com/serv"/> </port> </service> endpoint Per un altro esempio: file WSDL di Amazon S3 http://s3.amazonaws.com/doc/2006-03-01/amazons3.wsdl 36 From WSDL 1.1 to WSDL 2.0 37
BPEL, BPMN, Service Integration UDDI WSDL SOAP HTTP Service Discovery Service Publication Service Description XML-based messaging Transport 38 Universal Description Discovery Integration Universal Description, Discovery, Integration (UDDI): servizio di directory basato su XML che permette ai service provider di rendere pubblica la presenza dei Web service offerti e ai service requestor di localizzare i Web service Senza UDDI, due applicazioni possono comunicare solo se già si conoscono, conoscono i servizi offerti e la loro localizzazione E un servizio globale condiviso tra server differenti sparsi in tutto il mondo, anche se non organizzati secondo una struttura gerarchica Diversi server possono condividere dati mediante un protocollo di replicazione! Si basa su SOAP per la trasmissione dei messaggi! L adozione di UDDI non è stata ampia 39
Interazione con UDDI! UDDI definisce un API standard per la pubblicazione e la scoperta delle informazioni nei service directory! Due azioni principali Registrazione da parte del provider Scoperta da parte del requestor requestor find UDDI publish provider 40